我在控制器中使用了以下注解:
@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模式生成的。我需要引用其他不可能是类的东西的响应。
1条答案
按热度按时间nxagd54h1#
错误处理是一个跨领域的问题,因此不应该与业务逻辑纠缠在一起。因此,最好有一个单独的类用
@ControllerAdvice
处理失败的。然后定义一个接受异常和
HttpServletRequest
作为参数并返回ResponseEntity
包含要返回的错误消息的类型。此方法带有注解
@ExceptionHandler(myException.class)
. 异常本身用@ResponseStatus(HTTPSTATUS.MYSTATUS)
. 这样,您将错误处理集中在一个地方,同时将错误处理应用于所有控制器。但是,可以通过传递
basePackageClasses
作为@ControllerAdvice
注解。