gpt4 book ai didi

validation - 确保 URI 有效

转载 作者:IT王子 更新时间:2023-10-29 01:33:52 26 4
gpt4 key购买 nike

我试图确保传递给我的 go 程序的 URL 是有效的。但是,我似乎不知道该怎么做。我想我可以通过 url.Parse 来提供它,但这似乎并没有完成这项工作。

package main

import (
"fmt"
"net/url"
)

func main() {
url, err := url.Parse("http:::/not.valid/a//a??a?b=&&c#hi")
if err != nil {
panic(err)
}
fmt.Println("It's valid!", url.String())
}

playground

是否有类似 filter_var 的内容?我可以用吗?

最佳答案

您可以检查您的 URL 是否有方案、主机和/或路径。

如果您检查返回的 URL,您可以看到无效部分被插入到不透明数据部分(因此从某种意义上说,它是有效的)。

url.URL{Scheme:"http", Opaque:"::/not.valid/a//a", Host:"", Path:"", RawQuery:"?a?b=&&c", Fragment:"hi"}

如果您解析一个 URL 而没有方案、主机和路径,您可能会认为它是无效的。 (虽然没有路径的主机通常是可以的,因为它暗示了 /,所以你需要检查它)

u, err := url.Parse("http:::/not.valid/a//a??a?b=&&c#hi")
if err != nil {
log.Fatal(err)
}

if u.Scheme == "" || u.Host == "" || u.Path == "" {
log.Fatal("invalid URL")
}

关于validation - 确保 URI 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com