gpt4 book ai didi

validation - 如何根据 http 方法类型设置不同的验证约束?

转载 作者:行者123 更新时间:2023-12-01 22:44:48 24 4
gpt4 key购买 nike

假设我有一个结构:

type Invoice struct {
ID *int64
Number *int64
Date *time.Time
}

我将它作为 JSON 接收,解码它,在进一步使用它之前,我想验证它的字段。例如,我想让数字和日期字段对于 POST 请求是强制性的,并让它们对于 PUT 请求是可选的。有没有 不错这样做的方式?是否有任何验证器允许对同一结构类型使用不同的验证规则,您可以根据用例进行切换?

最佳答案

我不认为这是一个好的解决方案,但您可以通过我的建议找到自己的方法。

您可以在结构中使用标签,然后使用反射检查它。

type Invoice struct {
ID *int64 `required`
Number *int64
Date *time.Time
}

进而
package main
import (
"fmt"
"reflect"
)

type Invoice struct {
ID *int64 `required`
Number *int64
Date *time.Time
}

...

t := reflect.TypeOf(myInvoice)
id, _ := t.FieldByName("ID")
if id.Tag == "required" && ...

但是,我会尽量避免在这种情况下使用反射,因为它不是一个好的用例。

可以在此处找到标签的概述:

https://medium.com/golangspec/tags-in-golang-3e5db0b8ef3e

关于validation - 如何根据 http 方法类型设置不同的验证约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58215174/

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