验证POST JSON正文匹配结构

我无法验证传递给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),}

}
zl1002007 回答:验证POST JSON正文匹配结构

您可以通过多种方式来实现此目的,并具有不同的严格程度:

  • 您可以检查UserID和UserName是否为空。这将无法验证输入是否与结构匹配。仅当这些字段出现在输入中时,它才会捕获用户标识和名称。

  • 如果可接受空值,则可以使用*string代替string,并检查指针是否为nil。如果指针为nil,则该字段不会出现在JSON中,或者显示为nil。如果它显示为空字符串,则指针将不会为nil,但字符串将为空。此方法还接受提交的JSON中是否还有其他字段。

  • 对于这种特定情况,如果要确保没有传递其他无法识别的字段,可以将正文解组到interface{}中,并确保它最多包含两个字段,并且这些字段是您识别出的字段。

通常,如果需要进行严格的验证,则可以使用json模式,并检查输入是否根据您期望的模式进行验证。通常这比它值得的麻烦更多。

本文链接:https://www.f2er.com/3107131.html

大家都在问