如何将Swagger 1.5中的请求正文更改为示例JSON请求正文

时间:2020-02-25 21:35:03

标签: java swagger swagger-ui dropwizard

Current look of Swagger request

是否可以更改机身

{
  "config": {
    "additionalProp1": {},
    "additionalProp2": {},
    "additionalProp3": {}
  },
  "class": "string"
}

看起来像

{
"class": "my.class.com",
"config": {
    "myParam": "",
    "datacenter": "USA",
}

当前方法看起来像这样

@POST
@Path("/run")
@Consumes(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Runs a specified job asynchronously",
    notes = "Doesn't work for full tasks.")
public Response createTask(TaskConfig taskConfig) {

TaskConfig是具有两个成员变量的基本类

public class TaskConfig {
    @JsonProperty("class")
    @NotNull
    private String clazz;

    private Map<String, Object> config;

我们正在使用Dropwizard Swagger bundle library.中的Swagger 1.5,我知道2.0具有@RequestBody批注,我只想确保这是我唯一的选择,然后再进行升级。

1 个答案:

答案 0 :(得分:0)

即使使用@RequestBody,我们也需要在TaskConfig类中添加其他注释。

我们正在使用Swagger2.0.x。 TaskConfig类将具有类似以下内容的字段:

@Schema(
  description = " My descriptions",
  type = "array",
  example = " {\"myParam\" :\"value\" ,"
      + "\"datacenter\": \"USA\"}")
private Map<String, Object> config;

类似地,clazz也可以这样注释:

@Schema(description = "The field descrition", example = "true")

RequestBody注释将如下所示:

@RequestBody(
  description = "Description of TaskConfig ",
  content = @Content(schema = @Schema(implementation = TaskConfig .class)))

我得到的结果如图所示:

enter image description here