7

我想使用 Swagger 为我的 Spring Boot API 提供 API 文档。我设法让 Springfox 2.3.0 工作,一切都按预期工作,除了控制器返回一个 ObjectNode。Swagger 尝试将返回的类 (ObjectNode) 转换为 JSON-Representation,结果如下:

{
    "array": true,
    "bigDecimal": true,
    "bigInteger": true,
    "binary": true,
    "boolean": true,
    "containerNode": true,
    "double": true,
    "float": true,
    "floatingPointNumber": true,
    "int": true,
    "integralNumber": true,
    "long": true,
    "missingNode": true,
    "nodeType": "ARRAY",
    "null": true,
    "number": true,
    "object": true,
    "pojo": true,
    "short": true,
    "textual": true,
    "valueNode": true
}

现在我知道,Swagger 无法猜测我构建的 JSON 中包含哪些值,但我想以任何形式手动添加正确的 ResponseModel。

控制器看起来像这样:

@ApiOperation(value = "NAME", notes = "NOTES")
@RequestMapping(value = "", method = RequestMethod.GET, produces="application/json")
public ResponseEntity<ObjectNode> getComponentByIdentification(
            @ApiParam(name="customerid", required=true, value="")
            @RequestParam (required = true)
            String customerId){
    return new ResponseEntity<ObjectNode>(someService.getCustomer(customerId), HttpStatus.OK);
}

有什么方法可以向 Swagger 提供自定义的 ResponseJSON,它在文档中显示为模型模式?

4

1 回答 1

0

我们可以使用 swagger springfox 注解在 swagger api 文档中给出自定义请求和响应模型,如下所示

@PostMapping
@ApiOperation(value = "Create Article", response = ArticleDTO.class)
@ApiImplicitParams({
@ApiImplicitParam(name = "Article DTO", value = "article", required = true, dataType = "com.example.ArticleDTO", paramType = "body")})
    public Article create(@ApiIgnore Article article) {
        return articleRepository.save(article);
    }

这里的请求和响应是 ArticleDTO,但将由 Jackson 转换为 Article,但文档将显示 ArticleDTO.java 中的内容

这是你想要的

于 2019-05-07T09:28:12.010 回答