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

Swagger - Springfox always generates some response messages (401,403...) by default. How can I remove them?

我有这么简单的控制器:

@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.0.2 或更早版本

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

对于2.x

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

除了使用

new Docket().useDefaultResponseMessages(false)

您可能还需要使用此注释,具体取决于您想要的状态代码 return:

@ResponseStatus(HttpStatus.CREATED)

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

使用 OpenAPI 3,您只需将此 属性 添加到 applications.yml(或类似的)

springdoc:
  override-with-generic-response: false