java—有没有一种方法可以从json或yml而不是类引用swagger@apiresponse中的响应?

0qx6xfy6  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(299)

我在控制器中使用了以下注解:

@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模式生成的。我需要引用其他不可能是类的东西的响应。

nxagd54h

nxagd54h1#

错误处理是一个跨领域的问题,因此不应该与业务逻辑纠缠在一起。因此,最好有一个单独的类用 @ControllerAdvice 处理失败的。
然后定义一个接受异常和 HttpServletRequest 作为参数并返回 ResponseEntity 包含要返回的错误消息的类型。
此方法带有注解 @ExceptionHandler(myException.class) . 异常本身用 @ResponseStatus(HTTPSTATUS.MYSTATUS) . 这样,您将错误处理集中在一个地方,同时将错误处理应用于所有控制器。
但是,可以通过传递 basePackageClasses 作为 @ControllerAdvice 注解。

相关问题