登录
首页 >  Golang >  Go问答

如何处理Rest API查询参数中的“#”

来源:stackoverflow

时间:2024-03-04 15:33:25 155浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《如何处理Rest API查询参数中的“#”》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我面临着从查询参数中提取完整值的挑战。

例如,我有一个 localhost:8080/myAPI?name=Shop & stop #1234

我也有 & 的问题,但至少 & 之后的内容被填充为单独的参数。我写了一些逻辑来管理它。

来到##之后的内容根本没有被填充。我正在使用 net/http 库。

有人遇到过类似的问题吗?


正确答案


首先,在 url 中,& 字符具有特殊含义:它分隔查询参数。因此,如果您在 url 中编码的数据包含 & 字符,则必须对其进行转义。 url.QueryEscape() 可以向您展示转义形式的样子:

fmt.println(url.queryescape("shop & stop "))

它输出:

shop+%26+stop+

请注意,&%26 一样进行转义,并且空格也用 + 符号替换。

因此您的有效输入网址应如下所示:

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 上的示例。

以上就是《如何处理Rest API查询参数中的“#”》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>