首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Go游乐场url验证

Go游乐场url验证
EN

Stack Overflow用户
提问于 2022-05-25 16:27:53
回答 1查看 407关注 0票数 -1

我正在发送一个请求,请求中包含一个URL and Content。验证是这样的,无论是URL还是震中都是强制性的。当URL为空时,当空字符串上的url validate失败时,程序将出错。

是否只有在url不为空的情况下才能运行URL验证?

这是我的代码片段。

代码语言:javascript
运行
复制
func (d *Doc) UnmarshalJSON(bytearray []byte) error {
    type doc struct {
        ID           ID      `json:"id" validate:"omitempty,numeric"`
        URL          string  `json:"url" validate:"required_without=Content,url"`
        Content      string  `json:"content" validate:"required_without=Url"`
    
    }
    var d doc
    if err := json.Unmarshal(bytearray, &d); err != nil {
        return err
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-05-26 20:58:44

还有一个类似于回购范围内的问题的问题,建议使用结构级验证。

验证器示例中的示例用法:示例/结构级别/main.go#l48

以下是未经测试的,但应该是一个很好的起点:

代码语言:javascript
运行
复制
import (
    "json"
    "gopkg.in/go-playground/validator.v9"
)

func init() {
    validate.RegisterStructValidation(DocStructLevelValidation, doc{})
}

type doc struct {
    ID           ID      `json:"id" validate:"omitempty,numeric"`
    URL          string  `json:"url"`
    Content      string  `json:"content"`
}

func DocStructLevelValidation(sl validator.StructLevel) {
    d := sl.Current().Interface().(doc)

    if d.URL == "" && d.Content == "" {
        sl.ReportError(d.URL, "url", "URL", "urlcontentrequired", "")
        sl.ReportError(d.Content, "content", "Content", "urlcontentrequired", "")
    }
}

func (d *Doc) UnmarshalJSON(bytearray []byte) error {
    var d doc
    if err := json.Unmarshal(bytearray, &d); err != nil {
        return err
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72381297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档