GO 中多个 HTTP 请求的一个结构中的动态验证规则

问题描述 投票:0回答:1

我正在 Go 中开发一个 REST API,它需要处理具有不同必填字段集的多种请求类型。具体来说,对我的 API 的每个请求都有不同的请求主体架构,并且根据端点具有不同的必填字段。

例如,我有两个 POST 请求:

  1. 在第一个请求中,字段
    ID
    UserName
    Active
    是必填字段。
  2. 在第二个请求中,仅需要字段
    ID
    UserName

目前,我的解决方案涉及为每种请求类型创建一个单独的结构,并使用

go-playground/validator
库来验证这些结构。这是我的意思的一个例子:

import (
    "gopkg.in/go-playground/validator.v9"
)

// Struct for request type 1
type RequestType1 struct {
    ID         string `json:"id" validate:"required"`
    UserName   string `json:"userName" validate:"required"`
    Active     bool   `json:"active" validate:"required"`
}

// Struct for request type 2
type RequestType2 struct {
    ID         string `json:"id" validate:"required"`
    UserName   string `json:"userName" validate:"required"`
    Active     bool   `json:"active"`
}

有没有一种解决方案可以定义一个结构体,以便在 Go 的请求主体中以不同的方式使用它?

go validation struct
1个回答
0
投票

我认为你可以创建一个嵌入结构:

import (
    "gopkg.in/go-playground/validator.v9"
)

type Request struct {
    ID         string `json:"id" validate:"required"`
    UserName   string `json:"userName" validate:"required"`
    Active     bool   `json:"active"`
}

// Struct for request type 1
type RequestType1 struct {
    Request
}

// Struct for request type 2
type RequestType2 struct {
    Request
}
© www.soinside.com 2019 - 2024. All rights reserved.