我正在 Go 中开发一个 REST API,它需要处理具有不同必填字段集的多种请求类型。具体来说,对我的 API 的每个请求都有不同的请求主体架构,并且根据端点具有不同的必填字段。
例如,我有两个 POST 请求:
ID
、UserName
和 Active
是必填字段。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 的请求主体中以不同的方式使用它?
我认为你可以创建一个嵌入结构:
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
}