golang net/url

URL 语法

URL提供了一种定位因特网上任意资源的手段,但这些资源是可以通过各种不同的方案(比如HTTP、FTP、SMTP)来访问,因此URL语法会随着方案的不同而不同。

<schema>://<user>:<password>@<host>:<port>/<path>:<params>?<query>#<frag>

scheme: 方案是如何访问指定资源的主要标识符,他会告诉负责解析URL应用程序应该使用什么协议。
host: 主机组件标识了因特网上能够访问资源的宿主机器,可以有主机名或者是IP地址来表示。
port: 端口标识了服务器正在监听的网络端口。默认端口号是80。
path: URL的路径组件说明了资源位于服务器的什么地方。
params: URL中通过协议参数来访问资源,比名值对列表,分号分割来进行访问。
query: 字符串是通过提问问题或进行查询来缩小请求资源类的范围。frag: 为了引用部分资源或资源的一个片段,比如URL指定HTML文档中一个图片或一个小节。HTTP通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器。浏览器从服务器获取整个资源之后,会根据片段来显示你感兴趣的片段部分。

net/url 解析demo

s:="mysql+pymysql://base:base-testdempo123@rr-2zeqddi95ss6s26cddz62o.mysql.rds.aliyuncs.com:3306/dbtest?charset=utf8&test=test#12345"
	u,err:=url.Parse(s)
	if err!=nil{
		panic(err)
	}
	fmt.Println(reflect.TypeOf(u)) //*url.URL

	fmt.Println(u.Opaque)
	fmt.Println(u.ForceQuery) //false

	//user 包含了所有的验证信息
	fmt.Println(u.User)  // base:base-testdempo123
	fmt.Println(u.User.String()) //base:base-testdempo123
	fmt.Println(u.User.Username()) //base
	fmt.Println(u.User.Password())  //base-testdempo123 true

   // 解析后的Scheme
	fmt.Println(u.Scheme) //mysql+pymysql
	//解析出路径
	fmt.Println(u.Path)  // /dbtest
	fmt.Println(u.Fragment)  //12345
	fmt.Println(u.RawPath)

	//host 包含了主机名和端口
	fmt.Println(u.Host)  //rr-2zeqddi95ss6s26cddz62o.mysql.rds.aliyuncs.com:3306
	fmt.Println(u.RawQuery)  //charset=utf8&test=test
s:="mysql+pymysql://base:base-testdempo123@rr-2zeqddi95ss6s26cddz62o.mysql.rds.aliyuncs.com:3306/dbtest?charset=utf8&test=test#12345"
	u,err:=url.Parse(s)
	if err!=nil{
		panic(err)
	}
	fmt.Println(reflect.TypeOf(u)) //*url.URL

	fmt.Println(u.String())
	fmt.Println(reflect.TypeOf(u.String()))
	fmt.Println(u.Port())
	fmt.Println(u.Query())  map[charset:[utf8] test:[test]]
	fmt.Println(u.Hostname())
	fmt.Println(reflect.TypeOf(u.Hostname()))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值