You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

go-gin代码生成中maxLength/minLength规则丢失问题咨询

解答

1. 规则未保留的原因

这不是你的操作错误,而是OpenAPI Generator的默认行为:它不会将minLength/maxLength这类验证规则写入json标签中——json标签仅负责JSON序列化/反序列化时的字段映射,不承载业务验证规则。

另外,你的Schema存在冗余代码:properties块外重复了type: string、长度限制和required规则,这部分属于无效冗余,建议清理为标准格式:

SerialNumber:
  type: object
  description: |
        A serial number of an entity. This is a basic string but with length limitations. Hence a separate type to uniquely
        identify such entities.
  properties:
    serial:
      type: string
      minLength: 5
      maxLength: 128
  required: [serial]

2. 在Go代码中获取并应用长度限制的方法

你可以通过以下方式让生成的代码包含验证规则:

  • 启用验证标签生成:在使用openapi-generator生成代码时,添加参数--additional-properties=enableValidation=true。生成后的结构体字段会带上validate标签,示例:
    type SerialNumber struct {
        Serial string `json:"serial" validate:"min=5,max=128"`
    }
    
    之后可以配合go-playground/validator这类验证库,在Gin接口中对请求参数做校验。
  • 查看自动生成的验证文件:部分Go-Gin模板会生成单独的验证逻辑文件(如serial_number_validation.go),里面会包含长度限制的判断逻辑,直接调用即可。

3. 关于json标签的预期误区

json标签的作用仅为指定JSON字段与Go结构体字段的映射关系(如字段名、是否忽略空值等),不会承载验证规则。验证规则通常通过专门的标签(如validate)、独立的验证函数或配置文件来实现,这是Go生态的通用实践。


内容的提问来源于stack exchange,提问作者Kay Dee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:12:45