Swagger - Springfox 默认总是生成一些响应消息(401,403...)。我怎样才能删除它们?

Posted

技术标签:

【中文标题】Swagger - Springfox 默认总是生成一些响应消息(401,403...)。我怎样才能删除它们?【英文标题】:Swagger - Springfox always generates some response messages (401,403...) by default. How can I remove them? 【发布时间】:2015-07-14 20:12:46 【问题描述】:

我有这么简单的控制器:

@RequestMapping(value="/async/data", method=RequestMethod.GET, produces="application/json")
@ApiOperation(value = "Gets data", notes="Gets data asynchronously")
@ApiResponses(value=@ApiResponse(code=200, message="OK"))
public Callable<List<Data>> getData()
    return ( () -> return dataService.loadData(); );

我希望只有 HTTP 状态 200 的响应消息。但是 springfox 总是生成以下消息(401、403、404)。如何禁用(不显示)它们?

async-rest-controller Show/Hide List Operations Expand Operations
GET /async/data Gets data

Implementation Notes
Gets data asynchronously

Response Class (Status 200)
ModelModel Schema


Response Content Type 

Response Messages
HTTP Status Code    Reason  Response Model  Headers
401 Unauthorized        
403 Forbidden       
404 Not Found

【问题讨论】:

【参考方案1】:

除了使用

new Docket().useDefaultResponseMessages(false)

你可能还需要根据你想要返回的状态码使用这个注解:

@ResponseStatus(HttpStatus.CREATED)

⚠️ 不要将ResponseEntity 与 WebFlux 一起使用,因为这将始终添加 200 代码。看到这个github issue。

【讨论】:

【参考方案2】:

您应该能够将插件设置为使用默认响应消息。请按照以下说明了解不同版本。

对于 1.0.2 或更早版本

  new SwaggerSpringMvcPlugin(...)
        //More config
        .useDefaultResponseMessages(false) //<-- this should be false
  ...;

对于 2.x

  new Docket()
        //More config
        .useDefaultResponseMessages(false) //<-- this should be false
  ...;

【讨论】:

这会删除未记录的响应代码,但不会删除 200 代码 @warrior107 :如果您使用 2.x 和最新版本的 spring,请在控制器端点上添加此注释:@ResponseStatus(HttpStatus.CREATED) 或它应该返回的任何响应代码。在 swagger 2.x 中,200 不应该在底部的列表中,只能在每个端点描述的顶部:“响应类(状态 XXX)”

以上是关于Swagger - Springfox 默认总是生成一些响应消息(401,403...)。我怎样才能删除它们?的主要内容,如果未能解决你的问题,请参考以下文章

SpringFox swagger2 and SpringFox swagger2 UI 接口文档生成与查看

Springfox集成swagger实战篇

自定义枚举 --- Swagger文档展示

Swagger 3.0快速入门

Swagger 3.0快速入门

springfox-swagger-ui3的基本使用