北京赵公口网站建设,深圳十大建筑工程公司排行榜,微信app小程序,wordpress网站导入背景
前后端分离情况下#xff0c;后端接口通常只需要返回JSON数据。 但有时候因为某些原因可能会导致得不到正确的结果。 比如 因为登录密码错误#xff0c;你不能直接返回错误信息和null#xff0c;这样前端很难处理。 又比如 因为后端接口爆出了异常#xff0c;也不能直…背景
前后端分离情况下后端接口通常只需要返回JSON数据。 但有时候因为某些原因可能会导致得不到正确的结果。 比如 因为登录密码错误你不能直接返回错误信息和null这样前端很难处理。 又比如 因为后端接口爆出了异常也不能直接把异常信息返回给前端。 我们需要给返回结果包上一层
{ code: 0, message 信息, data 返回结果}code 用于判断响应类型。message 用于显示错误信息。data : 返回响应结果 SpringBoot配置
1、定义通用的响应体 - MyResponse
public record MyResponseT(int code,String message,T data) {}2、定义响应处理器 - MyResponseHandler
将返回结果封装到MyResponse实例。
RestControllerAdvice
public class MyResponseHandler implements ResponseBodyAdviceObject {Overridepublic boolean supports(MethodParameter returnType, Class? extends HttpMessageConverter? converterType) {//如果返回true,就可以不对这个returnType进行增强return false;}Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class? extends HttpMessageConverter? selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {// 如果是MyResponse直接返回if (body instanceof MyResponse) {return body;}if (body instanceof String) {return body;}return new MyResponse(0,null,body);}
}
3、定义异常响应处理器 - MyResponseHandler
ExceptionHandler 拦截某个异常对该异常进行处理返回处理后的信息
RestControllerAdvice
public class MyExceptionHandler {ExceptionHandler(IOException.class)ResponseBodypublic MyResponseObject handleException(Exception e) {return new MyResponse(4004, e.getMessage(), null);}
}
这样简单的响应配置就做好在实际项目还需要根据自己需求进行处理。