温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用golang怎么获取URL

发布时间:2020-10-22 17:21:21 阅读:2246 作者:Leah 栏目:编程语言
GO开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

今天就跟大家聊聊有关使用golang怎么获取URL,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

在golang中的http.Request对象中的所有属性,没有可以直接获取完整URL的方法。但可以通过host和请求地址进行拼接。具体方法是在Request.Host中获取hostname,Request.RequestURI获取相应的请求地址。

对于协议的判断,如区分http还是https协议,一开始尝试通过r.Proto属性判断,但是发现该属性不管是http,还是https都是返回HTTP/1.1,又寻找了下发现TLS属性,在https协议下有对应值,在http下为nil。
主要技术点:
1.通过r.TLS是否为nil判断scheme是http或https:
r.TLS == nil ---> http
r.TLS != nil ---> https
2.通过r.Proto获取http版本号,例如:HTTP/1.1
3.通过r.Host获取地址及端口号,例如:localhost:9090或127.0.0.1:8000
4.通过r.RequestURI获取目录及参数,例如:/index?id=2

完整代码:

package mainimport (    "fmt"    "log"    "net/http"    "strings")func index(w http.ResponseWriter, r *http.Request) {    fmt.Println("--------------------")    fmt.Println(r.Proto)    // output:HTTP/1.1    fmt.Println(r.TLS)    // output:     fmt.Println(r.Host)    // output: localhost:9090    fmt.Println(r.RequestURI)    // output: /index?id=1    scheme := "http://"    if r.TLS != nil {        scheme = "https://"    }    fmt.Println(strings.Join([]string{scheme, r.Host, r.RequestURI}, ""))    // output: http://localhost:9090/index?id=1}func GetURL(r *http.Request)(Url string) {    scheme := "http://"    if r.TLS != nil {        scheme = "https://"    }    return strings.Join([]string{scheme, r.Host, r.RequestURI}, "")}func main() {    http.HandleFunc("/index", index)    err := http.ListenAndServe(":9090", nil)    if err != nil {        log.Fatal("ListenAndServe: ", err)    }}

看完上述内容,你们对使用golang怎么获取URL有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×