我是靠谱客的博主 开朗过客,最近开发中收集的这篇文章主要介绍GO的URL合法性检查,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Go 标准库的net/url包提供的两个函可以直接检查URL合法性,不需要手动去正则匹配校验。 下面可以直接使用ParseRequestURI()函数解析URL,当然这个只会验证url格式,至于域名是否存在或注册,不会检查的,举个例子:

package main
 
import (
    "fmt"
    "net/url"
)
 
func main() {
    url, err := url.ParseRequestURI("https://www.zhoubotong.site") // 注意这里必须带有http/https协议,
    //否则会被认定非合法url,但是使用//www.zhoubotong.sit,被返回空,所以error哪里会被绕过,该示例代码不够严谨
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(url.Hostname())
} 

输出:[www.zhoubotong.site](http://www.zhoubotong.site),下面整个错误的url:

func main() {
    url, err := url.ParseRequestURI("www.zhoubotong.site") // www.zhoubotong.site" 或者zhoubotong.site"
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(url.Hostname())
}

输出:parse "www.zhoubotong.site": invalid URI for request,既然上面的代码不够严谨,如何改善呢?完整代码如下:

package main
 
import (
    "fmt"
    "net/url"
)
 
func main() {
    var u string = "https://www.zhoubotong.site"
    _, err := url.ParseRequestURI(u)
    if err != nil {
        fmt.Println(err)
        return
    }
    url, err := url.Parse(u)
    if err != nil || url.Scheme == "" || url.Host == "" {
        fmt.Println(err)
        return
    }
    fmt.Println(url.Hostname(), "success")
}


最后

以上就是开朗过客为你收集整理的GO的URL合法性检查的全部内容,希望文章能够帮你解决GO的URL合法性检查所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(251)

评论列表共有 0 条评论

立即
投稿
返回
顶部