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

如何禁用springdoc-openapi为Swagger自动填充的默认响应内容

解决springdoc-openapi自动填充未配置content的响应内容问题

springdoc-openapi默认会自动将成功响应(如200)的content内容复用给未配置content的其他响应(如404),这和旧版Swagger的行为不同。以下是几种可行的解决方法:

方法1:在api.yml中显式定义空结构的content

直接给404响应配置一个空的可空schema,避免springdoc自动继承200的内容:

paths:
  /your-api-path:
    get:
      responses:
        200:
          description: 请求成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: string
              example:
                data: "success"
        404:
          description: 资源未找到
          content:
            application/json:
              schema:
                type: object
                nullable: true

方法2:全局禁用响应内容继承

通过springdoc的配置属性关闭自动解析继承响应schema的行为,在application.yml中添加:

springdoc:
  api-docs:
    resolve-schema-properties: false

或者在application.properties中:

springdoc.api-docs.resolve-schema-properties=false

开启这个配置后,所有未显式配置content的响应都不会复用其他响应的内容,仅显示描述信息。

方法3:通过注解局部禁用

如果只需要针对单个接口的特定响应禁用,可以在Controller方法上使用@ApiResponse注解,显式设置隐藏的schema:

@GetMapping("/your-api-path")
@ApiResponse(responseCode = "404", description = "资源未找到", content = @Content(schema = @Schema(hidden = true)))
public ResponseEntity<?> yourApiMethod() {
    // 接口逻辑
}

补充说明

你之前尝试的content: {}无效,是因为springdoc会忽略空的content对象,转而自动继承成功响应的content结构。必须显式配置一个空的schema或者通过配置关闭继承行为才能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:10:14