我正在尝试找出一种处理多重用途结构体的合理方法。让我解释一下情况。
我有一个代表gorm模型的结构体。在当前实现中,我将验证绑定到这个结构体上,因此当请求到达端点时,我将根据模型的结构体进行验证。这对大多数情况都有效。但是,有些情况下,我希望更多地控制请求和响应。
通过引入几个额外的内部结构体来解析请求和响应是可行的。我可以将验证从模型中分离到请求特定的结构体中。我正在努力找出围绕这些模式的最佳实践。相信很多人也会面临类似的情况。
// Transaction holds the transaction details.
type Transaction struct {
Program Program
ProgramID uuid.UUID
Type string
Value float64
Reference string
}
// TransactionRequest for the endpoint.
type TransactionRequest struct {
ProgramKey string `json:"program_key" validator:"required"`
Type string `json:"type" validator:"required,oneof=credit debit"`
Value float64 `json:"value" validator:"required,numeric"`
Reference string `json:"reference" validator:"required"`
}
更新:
我通过引入额外的标签来处理更新请求,成功找到了平衡点。有关如何实现的详细信息,请查看这里。