Go语言拼接URL路径的方法有哪些

其他教程   发布日期:2023年08月07日   浏览次数:504

这篇文章主要介绍“Go语言拼接URL路径的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go语言拼接URL路径的方法有哪些”文章能帮助大家解决问题。

Go语言拼接URL路径有多种方法建议用ResolveReference。

JoinPath

JoinPath会把多个多个路径合并成一个路径,并且处理../和./,多个//合并成单个/。

  1. package main
  2. import (
  3. "fmt"
  4. "net/url"
  5. )
  6. func main() {
  7. u1 := "http://example.com/directory/"
  8. u2 := "../../..//search?q=dotnet"
  9. u3 := "/dir1/dir2/search?q=dotnet"
  10. j1, _ := url.JoinPath(u1, u2)
  11. j2, _ := url.JoinPath(u1, u3)
  12. fmt.Println(j1)
  13. // http://example.com/search%3Fq=dotnet
  14. fmt.Println(j2)
  15. // http://example.com/directory/dir1/dir2/search%3Fq=dotnet
  16. }

ResolveReference

ResolveReference会处理绝对路径和相对路径。

  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/url"
  6. )
  7. func main() {
  8. u1, _ := url.Parse("../../..//search?q=dotnet")
  9. u2, _ := url.Parse("/dir1/dir2/search?q=dotnet")
  10. base, err := url.Parse("http://example.com/directory/")
  11. if err != nil {
  12. log.Fatal(err)
  13. }
  14. fmt.Println(base.ResolveReference(u1))
  15. // http://example.com/search?q=dotnet
  16. fmt.Println(base.ResolveReference(u2))
  17. // http://example.com/dir1/dir2/search?q=dotnet
  18. }

path.Join

path主要是对斜杠放个的路径。

  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/url"
  6. "path"
  7. )
  8. func main() {
  9. u, err := url.Parse("http://example.com/test/")
  10. if err != nil {
  11. log.Fatal(err)
  12. }
  13. u.Path = path.Join(u.Path, "../bar.html")
  14. s := u.String()
  15. fmt.Println(s) // http://example.com/bar.html
  16. }

以上就是Go语言拼接URL路径的方法有哪些的详细内容,更多关于Go语言拼接URL路径的方法有哪些的资料请关注九品源码其它相关文章!