copy_left
golang url 链接地址解析包
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
copy_left
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
golang url 链接地址解析包
golang url 链接地址解析包
copy_left
关注
发布于 2019-08-21 16:42:24
3.2K
0
发布于 2019-08-21 16:42:24
举报
文章被收录于专栏:
方球
golang url 链接地址解析包
url 编码
QueryEscape 将字符地址转为安全地址 func QueryEscape(s string) string p := url.QueryEscape("/user?id=12") // >>> %2Fuser%3Fid%3D12
QueryUnescape 还原QueryEscape 转码 func QueryUnescape(s string) (string, error)
URL 类型
URL 结构 type URL struct { Scheme string Opaque string // 编码后的不透明数据 User *Userinfo // 用户名和密码信息 Host string // host或host:port Path string RawQuery string // 编码后的查询字符串,没有'?' Fragment string // 引用的片段(文档位置),没有'#' }
url 解析格式 // 双斜杠地址 scheme://[userinfo@]host/path[?query][#fragment] // 非双斜杠地址 scheme:opaque[?query][#fragment] compelePath := "http://lcoalhost:8080/user?id=1" subPath := "/user?id=1" // 双斜杠 cP, _ := url.Parse(compelePath) _log(cP.Host) // >>> lcoalhost:8080 // 非双斜杠 sP, _ := url.Parse(subPath) _log(sP.Host) _log(sP.RawQuery) // >>> (空值) // >>> id=1 // 两者可获取的参数不同
URL 解析
Parse 将字符解析为URL对象 func Parse(rawurl string) (url *URL, err error)
ParseRequestURI 解析从http请求中获取的 url地址,该地址将不包含[#fragment] 后缀 func ParseRequestURI(rawurl string) (url *URL, err error)
URL 操作方法
func IsAbs 是否为绝对地址 func (u *URL) IsAbs() bool compelePath := "http://lcoalhost:8080/user?id=1" subPath := "/user?id=1" cP, _ := url.Parse(compelePath) _log(cP.IsAbs()) // >>> true sP, _ := url.Parse(subPath) _log(sP.IsAbs()) // >>> false
func Query 获取查询参数 func (u *URL) Query() Values URL, _ := url.Parse("/user?nickname=coco") args := URL.Query() // >>> map[nickname:["coco"]]
func RequeryURI 获取URL编码后的参数字符 u := url.URL{ Host: "lcoalhost:8080", Path: "/user", RawQuery: "nickname=coco&age=24", } queryStr := u.RequestURI() // >>> /user?nickname=coco&age=24
func String 获取完整的地址字符 func (u *URL) String() string u := url.URL{ Scheme: "http", Host: "lcoalhost:8080", Path: "/user", RawQuery: "nickname=coco&age=24", } _log(u.String()) // >>> http://lcoalhost:8080/user?nickname=coco&age=24
func Parse 以当前URL为上下文解析新地址 func (u *URL) Parse(ref string) (*URL, error) u := url.URL{ Scheme: "http", Host: "lcoalhost:8080", Path: "/user", RawQuery: "nickname=coco&age=24", } newUrl, _ := u.Parse("/login") // >>> http://lcoalhost:8080/login
URL 用户结构方法
User 使用用户名创建用户信息结构 func User(username string) *Userinfo
UserPassword 使用用户密码创建用户信息结构 func UserPassword(username, password string) *Userinfo
func Username 获取用户名称 func (u *Userinfo) Username() string
func Password 是否设置密码 func (u *Userinfo) Password() (string, bool)
func String 返回用户信息 func (u *Userinfo) String() string
参数对象 Values
Values 结构 type Values map[string][]string
ParseQuery 参数解析 func ParseQuery(query string) (m Values, err error) args, _ := url.ParseQuery("name=coco&age=24") // >>> map[age:[24], name:[coco]] prefixArgs, _ := url.ParseQuery("/user?name=coco") // >>> map[/user?name:[coco]] // 需要注意这里解析的字符不包含地址的其他部分, [key]=[value]
func Get 获取指定参数集合的第一个值 func (v Values) Get(key string) string args, _ := url.ParseQuery("name=coco&age=24") // 添加新元素 args.Add("name", "jeck") _log(args.Get("name")) // >>> coco
func Set 设置参数 func (v Values) Set(key, value string) args, _ := url.ParseQuery("name=coco&age=24") args.Add("name", "jeck") args.Set("name", "Rogan") // >>> map[age:[24] name:[Rogan]]
func Add 添加参数 func (v Values) Add(key, value string)
func Del 删除参数 func (v Values) Del(key string)
func Encode 转字符串 func (v Values) Encode() string args := url.Values{ "name": []string{"coco"}, "age": []string{"34"}, } queryStr := args.Encode() // >>> age=34&name=coco
总结
URL 包提供的是对 url 的解析及构建方法
按照类型分: URL, Userinfo, Values
按照方法分:
类构件[ 将字符地址解析为对应类型 , url.ParseQuery ]
查询[从解析后的对象获取数据, URL.Query]
操作[ 修改对象信息, Values.Set ]
服务端使用 解析较多 例如: url.Parse URL.Query ....
客户端, 爬虫 以构建查询为主 例如: Values.Get Values.Encode ....
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2019.06.07 ,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
http
php
编程算法
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
http
php
编程算法
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
目录
golang url 链接地址解析包
url 编码
URL 类型
URL 解析
URL 操作方法
URL 用户结构方法
参数对象 Values
总结
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐