我是@程序员小助手 Rman,继Xman,Ironman,Superman之后又一个实力派man。
引言
在本文中,您将了解如何在Golang中对查询字符串或路径段进行URL编码。URL编码,也称为百分比编码,将包含不可打印、保留或非ascii字符的字符串转换为可以在internet上传输的普遍接受的格式。
URL编码的数据也称为 application/x-www-form-urlencoded MIME格式。
编码
Go的net/url包内有一个名为QueryEscape的内置方法来转义/编码一个字符串,这样它就可以安全地放在URL查询中。下面的示例演示如何在Golang -中对查询字符串进行编码。
package main import ( "fmt" "net/url" ) func main() { query := "Hellö Wörld@Golang" (query)) }
输出内容:
Hell%C3%B6+W%C3%B6rld%40Golang
对多个查询参数的编码
如果希望同时对多个查询参数进行编码,则可以创建 url.Values 由查询参数到值的映射组成,并使用url.Values.Encode()方法对所有查询参数进行编码。
下面是一个例子:
package main import ( "fmt" "net/url" ) func main() { params := url.Values{} ("name", "@Rajeev") ("phone", "+919999999999") ()) }
输出内容:
name=%40Rajeev&phone=%2B919999999999
对URL路径编码
与QueryEscape一样,Go中的net/url包也有另一个名为PathEscape()的函数,用于对字符串进行编码,以便将其安全地放置在URL的路径段中。
举个栗子:
package main import ( "fmt" "net/url" ) func main() { path := "path with?reserved+characters" (path)) }
输出内容:
path%20with%3Freserved+characters
通过编码各个部分来构建完整的URL
最后,让我们看一个完整的例子,在Golang中进行URL解析和编码。
package main import ( "fmt" "net/url" ) func main() { // base url baseUrl, err := url.Parse(";) if err != nil { ("Malformed URL: ", err.Error()) return } // 添加query string参数 ba += "path with?reserved characters" // 参数准备 params := url.Values{} ("q", "Hello World") ("u", "@rajeev") // 附加query string到url上 ba = () ("Encoded URL is %q\n", ba()) }
输出内容:
Encoded URL is ";u=%40rajeev"
写在最后
从部分到整体,构建起来整个功能,这是拆解的用法。到更复杂的场景下用起来吧。
Happy coding :)