微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Swagger UI 中显示自定义 JSON?

如何解决如何在 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 中显示如下:

pic1

pic2

但是在这种情况下,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));
    }

pic3

pic4

我不知道如何将这个示例 JSON 模型直接写入 Swagger。 或者没有任何配置就无法在 Swagger UI 中定义示例模型?

Maven的依赖如下图:

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-boot-starter</artifactId>
   <version>3.0.0</version>
</dependency>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。