go - 我们如何管理 Rest API 查询参数中的“#”
问题描述
我面临着从查询参数中提取完整值的挑战。
例如,我有一个localhost:8080/myAPI?name=Shop & stop #1234
我也有这个问题,&
但至少之后的内容&
被填充为单独的参数。我写了一些逻辑来管理它。
来到#
,之后的内容#
根本不会被填充。我正在使用net/http
图书馆。
有没有人遇到过类似的问题?
解决方案
首先,在 URL 中,该&
字符具有特殊含义:它分隔查询参数。因此,如果您在 URL 中编码的数据包含&
字符,则必须对其进行转义。url.QueryEscape()
可以向您展示转义形式的外观:
fmt.Println(url.QueryEscape("Shop & stop "))
它输出:
Shop+%26+stop+
请注意,它&
被转义为%26
,并且空格也被替换为+
符号。
因此,您的有效输入 URL 应如下所示:
rawURL := "http://localhost:8080/myAPI?name=Shop+%26+stop+#23452"
使用该net/url
包解析有效的 URL,它还支持获取参数值和您要查找的片段(片段是字符后面的剩余部分)#
:
u, err := url.Parse(rawURL)
if err != nil {
panic(err)
}
fmt.Println(u.Query().Get("name"))
fmt.Println(u.Fragment)
这输出:
Shop & stop
23452
试试Go Playground上的示例。
推荐阅读
- python - 如何使用 Selenium 从 Firefox 中删除消息浏览器处于远程控制之下
- php - 未创建 Cookie
- unity3d - Unity 2020.2 Alpha 不支持地形工具?
- python - 多索引json到数据框
- bpf - 如何在 bpftracing 脚本中使用结构
- eclipse - POM SNAPSHOT 的 Maven parent.relativePath 指向新父级而不是旧父级错误
- python - 我可以在循环 JSON 数据时附加到 pandas 数据框吗?
- android-espresso - Android Espresso 没有 NavController 设置错误
- amazon-web-services - AWS SES 从任何地址发送邮件
- asp.net - ASP.NET Core WebApplication IIS Express 错误