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

Swagger/OpenAPI 3.0 代 - 添加新的内容类型隐藏以前的架构信息

如何解决Swagger/OpenAPI 3.0 代 - 添加新的内容类型隐藏以前的架构信息

我正在使用 Java 注释来构建我们的 swagger 文档。在一种情况下,我们希望根据“接受”标头以 JSON 或 csv 格式提供输出。我创建了这样的休息界面:

@RestController
@EnableAutoConfiguration
@RequestMapping(path="/api/v2/swaggerTest")
@Api
public class SwaggerDocResource {

    private static class ItemDto {
        String name;
        Integer age;
    }

    @ApiOperation(value = "Get the requested items in json")
    @GetMapping(produces = "application/json")
    public ResponseEntity<ItemDto> getItems() {
        return null;
    }

    @ApiOperation(value = "Get the requested items in csv")
    @GetMapping(produces = "text/csv")
    public ResponseEntity<String> exportItems() {
        return null;
    }

}

如果我注释掉 csv 方法生成的 Swagger 文档会为我的 DTO 类生成一个架构并引用它:

...
"responses": {
    "200": {
        "description": "OK","content": {
            "application/json": {
                "schema": {
                    "$ref": "#/components/schemas/ItemDto"
                }
            }
        }
    },...

但是,如果我确实包含了 csv 方法,则不再生成我的 DTO 类的架构,并且两种类型的响应都被赋予相同的架构:

...
"responses": {
    "200": {
        "description": "OK","content": {
            "application/json": {
                "schema": {
                    "type": "string"
                }
            },"text/csv": {
                "schema": {
                    "type": "string"
                }
            }
        }
    },...

是否可以为这些不同的内容类型分配不同的架构?我一直无法弄清楚如何。

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