0

我将 Swagger2 与 Springfox 和 Spring Boot 一起使用。我有一个这样定义的端点:

@ApiOperation(value = "save", nickname = "Save Store")
@ApiResponses(value = {
        @ApiResponse(code = 201, message = "Created"),
        @ApiResponse(code = 401, message = "Unauthorized"),
        @ApiResponse(code = 403, message = "Forbidden"),
        @ApiResponse(code = 500, message = "Failure", response = ErrorResource.class)})
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
public void save(@Valid @RequestBody Store store, BindingResult bindingResult, HttpServletRequest request, HttpServletResponse response) {
    if (bindingResult.hasErrors()) {
        throw new InvalidRequestException("Invalid Store", bindingResult);
    }

    this.storeService.save(store);
    response.setHeader("Location", request.getRequestURL().append("/").append(store.getId()).toString());
}

生成的 API 文档在模型模式中显示idStore从技术上讲,创建StoreJSON 时不应包含id. 我试图弄清楚如何告诉 Swagger/Springfox 忽略id但仅针对此端点。

4

1 回答 1

0

您可以通过使用@ApiModelProperty注释类的属性并将其隐藏属性设置为 true 来隐藏模型中的字段。

import io.swagger.annotations.ApiModelProperty;

public class Store {

    @ApiModelProperty(hidden = true)
    private Long id;

}

不幸的是,这样做会隐藏每个使用 Store 类作为输入的端点上的 id 字段。显示另一个端点的字段将需要一个单独的类。

于 2016-05-06T06:15:19.863 回答