gpt4 book ai didi

go - 验证 POST JSON 正文匹配结构

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

我无法验证传递给我的 POST 端点的 JSON 主体是否与为可接受的 JSON 主体创建的结构相匹配。任何帮助,将不胜感激

type NewUser struct {
UserID string `json:"user_id"`
UserName string `json:"user_name"`
}

func AddUser(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")

decoder := json.NewDecoder(r.Body)

var user NewUser
err := decoder.Decode(&user)

if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
}
user.UserID != NewUser.UserID{
http.Error(w, "error", http.StatusBadRequest),
}

}

最佳答案

有多种方法可以实现这一目标,但严格程度不同:

  • 您可以检查 UserID 和 UserName 是否为非空。这将不会验证输入是否与结构匹配。如果这些字段出现在输入中,它只会捕获用户 ID 和名称。
  • 如果可以接受空值,可以使用 *string而不是 string ,并检查指针是否为零。如果指针为 nil,则该字段不会出现在 JSON 中,或者显示为 nil。如果它显示为空字符串,则指针不会为零,但字符串将为空。如果提交的 JSON 中有其他字段,此方法也接受。
  • 对于这种特定情况,如果您想确保没有传递其他无法识别的字段,您可以将正文解码为 interface{} ,并确保它最多包含两个字段,并且这些字段是您识别的字段。

  • 一般来说,如果您需要进行严格验证,您可以使用 json 模式,并检查输入是否符合您期望的模式。这通常比它的值(value)更麻烦。

    关于go - 验证 POST JSON 正文匹配结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58844656/

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