我正在使用 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/