如何在Springfox的Swagger 2中为JSONObject请求体自定义示例值?

问题描述 投票:1回答:1

我想自定义我使用Springfox的Swagger(Spring REST API)制作的API文档的示例值.enter image description here

由于请求体是通过JQuery AJAX的字符串化JSON,因此@RequestParam是一个字符串。我尝试了多种“解决方案”,包括@ApiModel@ApiImplicitParams,所有这些都没有奏效。 "string"似乎永远不会改变。

如何更改示例值?我不介意是否需要手动完成。我只想让该区域显示一个JSON对象。

rest spring-boot swagger-ui swagger-2.0 springfox
1个回答
1
投票

如果您使用对象来描述请求正文,则可以使用@ApiModelProperty,例如:

data class RequestBody(
    @ApiModelProperty(example = "John Doe")
    val name: String,
    @ApiModelProperty(example = "Coolstreet 1")
    val address: String
)

另一种方法是使用@Example和@ExampleProperties,但我发现它们更加混乱。有一些关于如何在官方参考文档中使用它们的例子:http://springfox.github.io/springfox/docs/current/#example-application

提供的示例:

@RequestMapping(value = "/2031", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "/2031")
@ApiImplicitParams({
    @ApiImplicitParam(
        name = "contents",
        dataType = "CustomTypeFor2031",
        examples = @io.swagger.annotations.Example(
            value = {
                @ExampleProperty(value = "{'property': 'test'}", mediaType = "application/json")
            })) 
})
public void save(@PathVariable("keyId") String keyId,
                 @PathVariable("id") String id,
                 @RequestBody String contents 
) {
}

public static class CustomTypeFor2031 { 
  private String property;

  public String getProperty() {
    return property;
  }

  public void setProperty(String property) {
    this.property = property;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.