如何禁用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
相关产品推荐
相关产品推荐

