Camel REST DSL 为 Swagger 设置示例值 UI
Camel REST DSL set Example Value for Swagger UI
是否可行,如果可行,如何在 Java 中使用 Camel REST DSL 设置 Swagger UI 的示例值?
我 运行 Swagger UI 来自 org.webjars 依赖 Spring Boot.
rest("/test").description("Some description").consumes("application/json").produces("application/json")
.post("/trigger").id("trigger")
.description("Another description")
.type(Map.class).param().name("body").type(body).description("More description"))
.required(true).example(readJson.getJson("json_example.txt")).endParam()
.route().bean(new Service(), "Trigger");
此 readJson
得到 JSON 作为字符串。
看起来 .example()
被忽略了,Swagger UI.
中什么也没有出现
它总是在示例值中显示“字符串”值,如下图所示。
作为解决方案,我使用下一个代码创建了 Java POJO class:
public class User{
public String user_id;
public String user_name;
}
然后我将 class 链接到 SpringBootRouter 中的 Camel REST DSL class:
...
rest("/test").description("Some description").consumes("application/json").produces("application/json")
.post("/trigger").id("trigger")
.description("Another description")
.type(User.class).param().name("body").type(body).description("More description"))
.required(true).endParam()
.route().bean(new Service(), "Trigger");
...
这是结果:
如有更好的解决方法,请告知
更新:
为了替换字符串的默认值 "string"
或 int 的 0
或布尔值的 true
,我使用了 ApiModelProperty
,如下所示:
import io.swagger.annotations.ApiModelProperty;
public class User{
@ApiModelProperty(example = "1165")
public String user_id;
@ApiModelProperty(example = "Bob")
public String user_name;
}
这是最终结果:
在你使用的 swagger v3 中
@Model(description = "The user name", example = "Bob")
public String user_name;
是否可行,如果可行,如何在 Java 中使用 Camel REST DSL 设置 Swagger UI 的示例值?
我 运行 Swagger UI 来自 org.webjars 依赖 Spring Boot.
rest("/test").description("Some description").consumes("application/json").produces("application/json")
.post("/trigger").id("trigger")
.description("Another description")
.type(Map.class).param().name("body").type(body).description("More description"))
.required(true).example(readJson.getJson("json_example.txt")).endParam()
.route().bean(new Service(), "Trigger");
此 readJson
得到 JSON 作为字符串。
看起来 .example()
被忽略了,Swagger UI.
它总是在示例值中显示“字符串”值,如下图所示。
作为解决方案,我使用下一个代码创建了 Java POJO class:
public class User{
public String user_id;
public String user_name;
}
然后我将 class 链接到 SpringBootRouter 中的 Camel REST DSL class:
...
rest("/test").description("Some description").consumes("application/json").produces("application/json")
.post("/trigger").id("trigger")
.description("Another description")
.type(User.class).param().name("body").type(body).description("More description"))
.required(true).endParam()
.route().bean(new Service(), "Trigger");
...
这是结果:
如有更好的解决方法,请告知
更新:
为了替换字符串的默认值 "string"
或 int 的 0
或布尔值的 true
,我使用了 ApiModelProperty
,如下所示:
import io.swagger.annotations.ApiModelProperty;
public class User{
@ApiModelProperty(example = "1165")
public String user_id;
@ApiModelProperty(example = "Bob")
public String user_name;
}
这是最终结果:
在你使用的 swagger v3 中
@Model(description = "The user name", example = "Bob")
public String user_name;