如何解决如何在 Swagger UI 中显示自定义 JSON?
我使用 springfox-boot-starter 3.0 来构建我的 API 文档。
除了一个案例外,所有事情都在以正确的方式进行。如果我的请求参数是这样的 Map 或 JSONObject,则似乎无法在 Swagger UI 模型中显示 JSON 示例:
@PostMapping("/trigger")
@ApiOperation(value = "trigger something")
@ApiImplicitParams(
@ApiImplicitParam(name = "reqForm",value = "{\"123123\":\"123123\"}",example = "{\"123123\":\"123123\"}"))
public StandardResult trigger(@RequestBody Map reqForm) throws Exception {
Object dagId = reqForm.get("dagId");
Object conf = reqForm.get("conf");
return StandardResult.succeed(dagService.trigger(dagId,conf));
}
我只想在 Swagger UI 中显示 JSON 的示例值和示例模型,我不想编写任何额外的 .java 文件来定义结构。
具有大量 .java 文件来描述结构的其他控制器可以在 Swagger UI 中显示如下:
但是在这种情况下,Map 应该是一个经常变化的动态参数。所以我希望展示一个没有太多 .java 文件的 JSON 模型,这样其他正在阅读我的文档的人会有一个很好的体验,而且我不必每天更改 .java 文件。
我知道如何通过使用 @ApiModel
和 @ApiModelProperty
创建多个 Java bean 在 Swagger UI 中显示模型和示例。但这也可能导致数十个 .java 文件,以便仅创建一个 JSON,并且很难在 JSON 中的某些内容发生更改时查找和更新属性。
例如,我要告诉其他人发送这样的 JSON:
"dagInfo": {
"id": 17,"tags": [
"test","task","dag"
],"interval": "None","dagName": "testDagGenerate","dagCode": "test_dag_generate","dagDescription": "test"
}
通过使用如下所示的 @ApiImplicitParams
,我可以在 Swagger UI 中显示示例值但没有模型。
@PostMapping("/trigger")
@ApiOperation(value = "trigger something")
@ApiImplicitParams(
@ApiImplicitParam(name = "reqForm",value = "example json",example = "\"dagInfo\": {\n" +
" \"id\": 17,\n" +
" \"tags\": [\n" +
" \"test\",\n" +
" \"task\",\n" +
" \"dag\"\n" +
" ],\n" +
" \"interval\": \"None\",\n" +
" \"dagName\": \"testDagGenerate\",\n" +
" \"dagCode\": \"test_dag_generate\",\n" +
" \"dagDescription\": \"test\"\n" +
" }"))
public StandardResult trigger(@RequestBody JSONObject reqForm) throws Exception {
Long dagId = reqForm.getobject("dagId",Long.class);
JSONObject conf = reqForm.getJSONObject("conf");
return StandardResult.succeed(dagService.trigger(dagId,conf));
}
我不知道如何将这个示例 JSON 模型直接写入 Swagger。 或者没有任何配置就无法在 Swagger UI 中定义示例模型?
Maven的依赖如下图:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。