当前位置: 移动技术网 > IT编程>脚本编程>Go语言 > Golang解析、验证、修改URL之Host、Port、Path

Golang解析、验证、修改URL之Host、Port、Path

2019年09月06日  | 移动技术网IT编程  | 我要评论
  • url解析验证问题
    • net.parseip()只能解析不带冒号以及端口号的ip4/ip6
      • ✔: 127.0.0.12001:db8::68
      • ✖: 127.0.0.1:8080www.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的大部分问题

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网