首页 文章

使用Swagger Spring的模型架构不应出现ID

提问于
浏览
0

我正在使用Swagger2与Springfox和Spring Boot . 我有一个如此定义的 endpoints :

@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文档在模型架构中显示 id Store . 从技术上讲,在创建 Store 时,JSON不应包含 id . 我试图弄清楚如何告诉Swagger / Springfox忽略 id 但仅限于此 endpoints .

1 回答

  • 0

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

    import io.swagger.annotations.ApiModelProperty;
    
    public class Store {
    
        @ApiModelProperty(hidden = true)
        private Long id;
    
    }
    

    不幸的是,通过这样做,您将隐藏使用Store类作为输入的每个 endpoints 上的id字段 . 显示另一个 endpoints 的字段需要单独的类 .

相关问题