Golang的net/url网址解析 参数编码解码

net/url包用于解析和处理URL及查询参数。通过url.Parse()可提取URL各部分;url.ParseQuery()或Query()方法解析查询参数为键值对;url.Values支持参数增删改查并自动编码;QueryEscape/Unescape实现特殊字符编码解码,确保URL合法性。

golang的net/url网址解析 参数编码解码

在Go语言中,net/url 包提供了处理URL和查询参数的实用功能,包括网址解析、参数编码与解码。这对于构建HTTP请求、处理Web表单数据或解析跳转链接非常关键。

URL解析:提取结构化信息

使用 url.Parse() 可将字符串URL解析为 *url.URL 结构体,便于访问各部分。

示例:

u, err := url.Parse("https://user:pass@example.com:8080/path?a=1&b=2#fragment")if err != nil {    log.Fatal(err)}fmt.Println("Scheme:", u.Scheme)     // httpsfmt.Println("User:", u.User)         // user:passfmt.Println("Host:", u.Host)         // example.com:8080fmt.Println("Path:", u.Path)         // /pathfmt.Println("RawQuery:", u.RawQuery) // a=1&b=2fmt.Println("Fragment:", u.Fragment) // fragment

查询参数解码:获取键值对

通过 url.ParseQuery() 或直接访问 URL 结构的 Query() 方法,可以将查询字符串解析url.Values 类型(即 map[string][]string)。

示例:

rawQuery := "name=go&tag=web&tag=url"values, _ := url.ParseQuery(rawQuery)fmt.Println(values["name"]) // [go]fmt.Println(values["tag"])  // [web url]// 从已解析的URL获取u, _ := url.Parse("https://example.com?lang=zh&mode=debug")fmt.Println(u.Query().Get("lang")) // zh(只取第一个值)fmt.Println(u.Query()["mode"])     // [debug]

查询参数编码:生成合法查询字符串

url.Values 支持添加、设置、删除参数,并能自动编码为合法的查询字符串。

立即学习“go语言免费学习笔记(深入)”;

操作示例:

v := url.Values{}v.Set("q", "golang tutorial")v.Add("tag", "web")v.Add("tag", "network")// 编码输出encoded := v.Encode() // q=golang+tutorial&tag=web&tag=networkfmt.Println(encoded)// 构建完整URLu := &url.URL{    Scheme:   "https",    Host:     "example.com",    Path:     "/search",    RawQuery: encoded,}fmt.Println(u.String()) // https://example.com/search?q=golang+tutorial&tag=web&tag=network

特殊字符编码与解码

Go会自动对参数值进行URL编码(如空格转为+或%20),解码时也正确还原。

中文、空格、符号等都会被编码,确保URL合法性 url.QueryEscape() 手动编码字符串 url.QueryUnescape() 进行反向解码示例:

keyword := "搜索 golang"escaped := url.QueryEscape(keyword)fmt.Println(escaped) // %E6%90%9C%E7%B4%A2+golangoriginal, _ := url.QueryUnescape(escaped)fmt.Println(original) // 搜索 golang

基本上就这些。掌握 net/url 的解析与编码机制,能有效避免参数传递出错或乱码问题,尤其在构建API请求或处理回调时非常实用。

以上就是Golang的net/url网址解析 参数编码解码的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1400009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月15日 16:40:59
下一篇 2025年12月15日 16:41:05

相关推荐

发表回复

登录后才能评论
关注微信