我正在使用 Swagger 注释和 SpringFox 为我的 REST API(使用 Sprint Boot 构建)生成 Swagger 规范。我用将返回的 @ApiResponse 代码注释每个方法。例如:

@DeleteMapping("/{pipelineName}")
@ApiOperation(value = "Delete a specific pipeline")
@ApiResponses({
    @ApiResponse(code = 204, message = "Pipeline has been deleted"),
    @ApiResponse(code = 404, message = "Pipeline does not exist")
})
public void deletePipeline(@PathVariable("pipelineName") @ApiParam(value = "Name of pipeline", required = true) String name){
    ...
}

但是,有些东西(我假设 SpringFox)会为每个 API 调用添加一个 200 响应代码,无论它是否定义。我知道我可以通过向每个方法添加 @ResponseStatus 注释来删除它,但是 a) 这似乎是 @ApiResponse 定义的不必要重复,并且 b) 某些方法可能返回多个 2xx 代码之一。

有没有办法或者去掉默认添加的200代码?

最佳答案

我相信您需要定义您在问题中提到的方法的默认响应状态。 @ApiResponse 来自 Springfox,@ResponseStatus 来自 Spring 框架。这不完全是重复。 HTTP 200 响应是默认行为,Springfox 不会做任何更改,因此它只是在自动检测到的代码之上添加额外的代码。

HTTP 204 示例:

@ResponseStatus(value = HttpStatus.NO_CONTENT)

在您的代码中:

DeleteMapping("/{pipelineName}")
@ApiOperation(value = "Delete a specific pipeline")
@ApiResponses({
    @ApiResponse(code = 204, message = "Pipeline has been deleted"),
    @ApiResponse(code = 404, message = "Pipeline does not exist")
})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void deletePipeline(@PathVariable("pipelineName") @ApiParam(value = "Name of pipeline", required = true) String name){
    ...
}

对于可能正在检查此主题的其他人:如果 Springfox 正在生成其他 HTTP 代码,您可能还需要 this

关于spring-boot - SpringFox Swagger - 删除 200 个响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56219422/

10-13 07:07