java - 有没有办法从 json 或 yml 而不是类中引用 swagger @ApiResponse 中的响应?
问题描述
我在控制器中使用了以下注释:
@ApiResponse(code = 400, message = "failed", response = MediaDataProductResponseV2.class)}
如您所见,响应字符串是根据类显示的。如何引用来自 yml 或 json 等文件的响应?
例子
@ApiResponse(code = 400, message = "failed", response = "${error}")} -> this doesn't work
我遇到的问题是公司的代码将所有错误和成功对象包含在一个 pojo 中,因此无法分离我们发送给客户的响应类型。假设我们有以下 pojo 响应:
public class pojo{
private String error;
private String response;
… setters and getters...
}
如果出现问题,我们只返回错误部分。如果成功,则响应。我无法在注释中指出这一点,因为它总是会序列化整个事情,我不想玩这些 pojo,因为它们是从 json 模式生成的。我需要引用其他不能成为类的响应。
解决方案
错误处理是一个横切关注点,因此不应与业务逻辑纠缠在一起。因此,最好有一个单独的类@ControllerAdvice
来处理故障。
然后,您定义一个方法,该方法将异常和 aHttpServletRequest
作为参数并返回ResponseEntity
包含您要返回的错误消息的类型的 a。
此方法用 注释@ExceptionHandler(myException.class)
。异常本身带有注释@ResponseStatus(HTTPSTATUS.MYSTATUS)
。这样,您就可以将错误处理集中在一个地方,同时将错误处理应用于所有控制器。
但是,您可以通过将basePackageClasses
作为参数传递给@ControllerAdvice
注释来覆盖它。
推荐阅读
- python - 比较两个列表,如果列表一中的条目与列表 2 中的条目相差 x 个字符,则将列表一条目替换为列表二条目
- r - 计算向量中出现相似文本值的次数
- reactjs - 当我们在反应中导航到我们的页面之一时如何清除我们的应用程序历史记录
- java - 如何动态连接不同的 SFTP 服务器?
- java - 类型中的方法不适用于Eclipse中的参数
- javascript - 如何在javascript中获取a href id值并取决于id值打开相关页面
- java - 错误:选项 -Xbootclasspath/p:不允许使用具有 netbean 11.3、jdk 13.0.1 的目标 13
- excel - 当单元格值不等于“X”时,是否有打开 msgbox 的 vba 代码?
- python - 如何删除 ImportError
- tuples - 加入大小估计