java - 如何在 OpenApi Spring 上添加不同的 @Schema 描述?
问题描述
我在使用 OpenApi 和 Spring 定义我的 API 时遇到了一些问题。我正在使用此依赖项:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.5.2</version>
</dependency>
我的问题是我想在不同的 Api 响应上定义一个 @Schema,但在每个响应中使用不同的描述和示例。
现在我有一个看起来像这样的响应:
public class LoginResponse {
@Schema(description = "User identifier", example = "12")
private Long id;
@Schema(description = "User balance", example = "{"type":"COINS","amount":1000}")
private Balance balance;
...
和其他看起来像这样的回应......
public class ModifyBalanceResponse {
@Schema(description = "User identifier", example = "12")
private Long id;
@Schema(description = "Added balance", example = "{"type":"COINS","amount":500}")
private Balance addedBalance;
@Schema(description = "Updated balance", example = "{"type":"COINS","amount":1500}")
private Balance updatedBalance;
...
因此,我拥有具有三个不同描述和示例的对象“Balance”,但是当它生成文档时,使用该对象的所有响应和字段都采用相同的描述和示例。
我已经看到,在生成的文件中,我将所有带有“$ref”标签的项目都添加到 Balance 模式,并且仅使用定义的描述/示例之一生成,如下所示:
addedBalance:
$ref: '#components/schemas/Balance'
我试图手动编辑文件,我可以通过将其替换为...来查看我想要的 swagger doc
addedBalance:
title: Balance
description: Added balance
example: '{"type":"COINS","amount":500}'
有什么办法可以用openapi提供的Spring注解来做这样的事情吗?诸如忽略模式对象并从字面上理解描述和示例之类的事情。我不介意它是否没有引用模式对象。
感谢优势。
解决方案
推荐阅读
- java - 如果对数据库本身的访问是线程安全的,我们如何确保冗余数据访问应用程序实例在 Java 中安全地工作线程?
- javascript - 如何让 Google Docs 语音输入在开启时保持激活状态?
- flutter - Google 的 OAuth 主页示例
- flutter - Flutter 使网络图像占据全角
- python - Python - Selenium 在提示中有效,但在脚本中无效
- php - Laravel MongoDB 在模型中传递对象
- javascript - 拖动时如何避免意外点击事件?
- ffmpeg - 如果源/目标下降,则使用 ffmpeg 重新流式传输
- powershell - 从注册表项(reg_binary)检查第 13 位(影子设置)?
- javascript - HTML - 样式组件:错误:元素类型无效:需要字符串或类/函数但得到:对象