【问题标题】:Swagger generates response body on 204 (No Content)Swagger 在 204 (No Content) 上生成响应正文
【发布时间】:2018-08-05 22:42:46
【问题描述】:

这是一个删除端点:

@ApiOperation(value = "delete subscription")
@ApiResponses(value = {
                @ApiResponse(code = 204, message = "Deleted", response = Void.class),
                @ApiResponse(code = 404, message = "Not Found")
})
@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public ListenableFuture<ResponseEntity<Void>> delete(@PathVariable long id)

Springfox 生成带有响应正文的 API 规范:

{
  "cancelled": true,
  "done": true
}

显然我希望 204 的响应正文规范为空白。如何实现这一点?

注意如果我将端点更改为同步:

public void delete(@PathVariable long id)

那么生成的API就好了。

【问题讨论】:

    标签: java spring swagger springfox


    【解决方案1】:

    尝试添加

    .genericModelSubstitutes(ListenableFuture.class)
    

    到您的 Docket 配置以支持 ListenableFuture&lt;T&gt;

    文档:http://springfox.github.io/springfox/javadoc/2.7.0/springfox/documentation/spring/web/plugins/Docket.html#genericModelSubstitutes(java.lang.Class...)

    用它的直接参数化类型替换每个泛型类。 genericModelSubstitutes(ResponseEntity.class) 将替代 ResponseEntity 与 MyModel

    例如:

    return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                .genericModelSubstitutes(ListenableFuture.class);
    

    【讨论】:

    • 它告诉 Springfox ListenableFuture 只是真实响应的包装,所以应该省略。
    猜你喜欢
    • 2021-03-09
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多