如何解决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 举报,一经查实,本站将立刻删除。