Golang解析、验证、修改URL之Host、Port、Path
程序员文章站
2023-11-22 12:55:22
Golang解析、验证、修改URL之Host、Port、Path ......
-
url解析验证问题
-
net.parseip()
只能解析不带冒号以及端口号的ip4/ip6- ✔:
127.0.0.1
、2001:db8::68
- ✖:
127.0.0.1:8080
、www.baidu.com
- ✔:
-
url.parse()
最好只用来解析标准url,不能用来验证url的正确性
-
func main() { ip1 := "www.baidu.com" ip2 := "127.0.0.1" ip3 := "127.0.0.1:8080" parsedip1 := net.parseip(ip1) parsedip2 := net.parseip(ip2) parsedip3 := net.parseip(ip3) fmt.println("net.parseip: ", parsedip1, parsedip2, parsedip3) fmt.println() url1 := "127.0.0" url2 := "abc" url3 := "127.0.0.1:8080" url4 := "http://127.0.0.1:8080/url" parsedurl1, err := url.parse(url1) if err != nil { fmt.println("error: ", err) } parsedurl2, err := url.parse(url2) if err != nil { fmt.println("error: ", err) } parsedurl3, err := url.parse(url3) if err != nil { fmt.println("error: ", err) } parsedurl4, err := url.parse(url4) if err != nil { fmt.println("error: ", err) } fmt.println("1: ", parsedurl1, "2: ", parsedurl2, "3: ", parsedurl3, "4: ", parsedurl4) } /* 输出结果: net.parseip: <nil> 127.0.0.1 <nil> error: parse 127.0.0.1:8080: first path segment in url cannot contain colon 1: 127.0.0 2: abc 3: <nil> 4: http://127.0.0.1:8080/url */
-
正确的url验证方式
-
go get github.com/asaskevich/govalidator
govalidator.isurl()
-
- 获取并修改url之host、port、path
func main() { rawurl := "http://127.0.0.1:8080/url/123" changehost := "192.168.1.1" newurl, _ := url.parse(rawurl) // host newurlhost := newurl.hostname() // port newurlport := newurl.port() // path newurlpath := newurl.path // url类型转string stringurl := newurl.string() // 修改url host newurl.host = changehost + ":" + newurl.port() fmt.println(newurlhost, newurlport, newurlpath, stringurl, newurl) }
其他相关方法:
- host、port
net.splithostport()
==>host、port、error
u := strings.split(url, ":")
==>host := u[0]
- path
url := http://www.a.com/123
==>base := path.base(url)
fmt.println(base)
==>123
以上结合可完成关于golang操作url的大部分问题
上一篇: 设计模式六大原则:单一职责原则
下一篇: 电商系统中的静态页解决方案