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

Go语言API Swagger文档如何移除additionalProp1并设置additionalProperties=false

解决Swagger生成additionalProperties: true的持久化方案

方法1:用结构体替代map类型

map[string]interface{}本身就表示允许任意键值对,Swagger默认会把它识别为additionalProperties: true。如果你的响应结构是固定的,直接换成明确的结构体定义,把需要的字段都列出来:

// @Description response format
type Response struct {
    Error *ErrorDetail `json:"error,omitempty"`
    // 按需添加其他返回字段
}

type ErrorDetail struct {
    Message   string `json:"message"`
    Path      string `json:"path"`
    Timestamp string `json:"timestamp"`
}

这样Swagger会严格按照结构体字段生成文档,不会出现多余的additionalProp1占位符。

方法2:通过Swagger注释强制指定属性

如果必须保留map类型,可借助Swagger的扩展注释来覆盖默认配置,以swaggo工具为例:

// @Description response format
// @swagger:model Response
// @Schema additionalProperties=false
type Response map[string]interface{}

生成文档时,工具会读取@Schema标签里的配置,自动将additionalProperties设为false。

方法3:自定义生成模板(全局生效)

如果用的是swaggo这类支持模板的生成工具,可以修改模板实现全局统一设置:

  • 找到工具的模板目录(一般在$GOPATH/pkg/mod/github.com/swaggo/swag@<版本号>/templates)
  • 打开swagger.json.tmpl这类核心模板文件
  • 找到处理additionalProperties的逻辑代码,将默认值从true改为false
    这种方式能一次性修改所有map类型的Swagger定义,但要注意工具版本更新可能会覆盖模板,记得提前备份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:56:01