首页 > 其他分享 >Go语言拼接URL路径的三种方法

Go语言拼接URL路径的三种方法

时间:2023-03-25 15:05:26浏览次数:47  
标签:http .. URL fmt dotnet 拼接 url Go com


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

JoinPath

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

package main

import (
	"fmt"
	"net/url"
)

func main() {
	u1 := "http://example.com/directory/"
	u2 := "../../..//search?q=dotnet"
	u3 := "/dir1/dir2/search?q=dotnet"

	j1, _ := url.JoinPath(u1, u2)
	j2, _ := url.JoinPath(u1, u3)
	fmt.Println(j1)
	// http://example.com/search%3Fq=dotnet
	fmt.Println(j2)
	// http://example.com/directory/dir1/dir2/search%3Fq=dotnet
}

ResolveReference

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

package main

import (
	"fmt"
	"log"
	"net/url"
)

func main() {
	u1, _ := url.Parse("../../..//search?q=dotnet")
	u2, _ := url.Parse("/dir1/dir2/search?q=dotnet")
	base, err := url.Parse("http://example.com/directory/")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(base.ResolveReference(u1))
	// http://example.com/search?q=dotnet
	fmt.Println(base.ResolveReference(u2))
	// http://example.com/dir1/dir2/search?q=dotnet
}

path.Join

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

package main

import (
	"fmt"
	"log"
	"net/url"
	"path"
)

func main() {
	u, err := url.Parse("http://example.com/test/")
	if err != nil {
		log.Fatal(err)
	}
	u.Path = path.Join(u.Path, "../bar.html")
	s := u.String()
	fmt.Println(s) // http://example.com/bar.html

}

参考

https://pkg.go.dev/net/[email protected]#JoinPathhttp://doc.golang.ltd/pkg/net_url.htm


标签:http,..,URL,fmt,dotnet,拼接,url,Go,com
From: https://blog.51cto.com/lilongsy/6149487

相关文章

  • go语言int64整型转字符串
    go语言中string(int)会把int当成UTF-8的Unicode值,转换成对应的字符,标准库strconv是专门用来实现基本数据类型和其字符串表示的相互转换。packagemainimport( "fmt" "s......
  • Gorm 实现无限树形菜单
    原文链接:https://www.zhoubotong.site/post/91.html通常树形菜单的实现基本就是递归调用,大部分场景毕竟这种数据不多,性能倒是并不突出,下面给个demo,有兴趣的朋友可以看......
  • 【入门】Go语言变量详解
    目录一、变量赋值的几种方式1.1声明单个变量1.2声明多个变量1.3初始化变量1.4变量赋值1.5自动推导类型方式声明变量二、输出输入格式控制2.1输出格式2.1输入格式2.3......
  • go gin web应用-通过中间件形式实现通用的参数检验
    都知道gin在web开发方面应用广泛,但在参数校验上,之前写一堆POST接口的时候,每个接口的业务代码里都要去实现validate校验逻辑,感觉代码复用糟糕。为解决这问题,想到通过......
  • go-pprof
    非侵入式的分析工具。主要分为几个阶段。1、收集运行信息引入包import"runtime/pprof"varcpuprofile=flag.String("cpuprofile","","writecpuprofileto......
  • java-使用jmh基准测试框架比较五种字符串拼接性能
    java-使用jmh基准测试框架比较五种字符串拼接性能引言Java中提供了5种字符串拼接的方法,使用+拼接字符串是最长见的方法。除此还有StringBuilder、StringBuffer、MessageForm......
  • 关于go-vendor和go-mod
    govendor在这个时间节点来讲的话,可能有些古典的气质了。govendor依旧在gomod的架构来讲,=gomodvendor这个是当时依赖于goland这个ide的环境中,默认会生成对应当前项......
  • 前端RSA非对称加密Go解密
    Person:JavaScript实现非对称加密ChatGPT:JavaScript可以使用公钥密码学算法来实现非对称加密。常用的公钥密码学算法包括RSA和ECC。下面是一个使用RSA算法......
  • go语言学习-grpc-1
    grpc简介gRPC由google开发,是一款语言中立、平台中立、开源的远程过程调用系统,gRPC客户端和服务端可以在多种环境中运行和交互,例如用java写一个服务端,可以用go语言写客户端......
  • Python字符串_拼接+还是join
    常用的join方法用来将列表或元祖中包含的多个字符串连接成一个字符串newstr = str.join(iterable)  newstr:表示合并后生成的新字符串; str:用于指定合并时的分隔......