go 拼接url参数
1、URL的定义信息
type URL struct {
Scheme string
Opaque string // encoded opaque data
User *Userinfo // username and password information
Host string // host or host:port
Path string // path (relative paths may omit leading slash)
RawPath string // encoded path hint (see EscapedPath method)
ForceQuery bool // append a query ('?') even if RawQuery is empty
RawQuery string // encoded query values, without '?'
Fragment string // fragment for references, without '#'
RawFragment string // encoded fragment hint (see EscapedFragment method)
}
type URL struct {
Scheme string // http或https协议
Opaque string // 编码不透明数据
User *Userinfo // 用户名密码信息--例如FTP需要带着用户名密码访问
Host string // 主机或主机:端口
Path string // 路径(相对路径可以省略前导斜线)
RawPath string // 编码路径
ForceQuery bool // 即使没有请求参数也会强制添加 ? 号
RawQuery string // 编码不带 ? 号的请求参数
Fragment string // 不带 # 号的引用片段
RawFragment string // 编码引用片段
}
2、解析给定的URL
package main
import (
"fmt"
"net/url"
)
func main() {
rawUrl := "https://pkg.go.dev/net/url?a=b&c=d#example-ParseQuery"
uri, err := url.Parse(rawUrl)
if err != nil {
return
}
fmt.Println(fmt.Sprintf("解析后的URL是:%#v", uri))
}
3、拼接query参数构建URL
package main
import (
"fmt"
"net/url"
)
func main1() {
rawUrl := "https://pkg.go.dev/net/url?a=b&c=d#example-ParseQuery"
uri, err := url.Parse(rawUrl)
if err != nil {
return
}
fmt.Println(fmt.Sprintf("解析后的URL是:%#v", uri))
}
func main() {
//创建 https://pkg.go.dev/net/url?a=b&b=d#example-ParseQuery
u := url.URL{}
u.Scheme = "https"
u.Host = "pkg.go.dev"
u.Path = "/net/url"
values := url.Values{} //拼接query参数
values.Add("a", "b")
values.Add("b", "d")
u.RawQuery = values.Encode()
u.Fragment = "example-ParseQuery"
fmt.Println(fmt.Sprintf("URL是:%s", u.String()))
}
4、修改请求路径和参数
package main
import (
"fmt"
"net/url"
"path"
)
func main() {
rawUrl := "https://pkg.go.dev/net/url?a=b&c=d#example-ParseQuery"
uri, err := url.Parse(rawUrl)
if err != nil {
return
}
v := url.Values{}
v.Add("a", "c")
v.Add("c", "b")
uri.RawQuery = v.Encode()
uri.Path = path.Join(uri.Path, "/ccc/ddd")
fmt.Println(fmt.Sprintf("修改后的URL是:%s", uri))
}
分类:
Go
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)