Swagger - Springfox默认会生成一些响应消息(401,403 ...).我该如何删除它们?

cod*_*ent 15 spring-mvc swagger swagger-ui

我有控制器这么简单:

    @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();} );
    }
Run Code Online (Sandbox Code Playgroud)

我期望只有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
Run Code Online (Sandbox Code Playgroud)

Dil*_*nan 27

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

对于1.0.2或之前

  new SwaggerSpringMvcPlugin(...)
        //More config
        .useDefaultResponseMessages(false) //<-- this should be false
  ...;
Run Code Online (Sandbox Code Playgroud)

对于2.x.

  new Docket()
        //More config
        .useDefaultResponseMessages(false) //<-- this should be false
  ...;
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

springdoc:
  override-with-generic-response: false
Run Code Online (Sandbox Code Playgroud)