当前位置: 首页 > news >正文

坪山网站建设哪家便宜县市区科普网站建设

坪山网站建设哪家便宜,县市区科普网站建设,南阳全员核酸检测,绍兴网站制作计划统一返回结果 定义统一返回结果类ResultResponse定义新注解ResponseResult来标记需要拦截的方法或类添加RestControllerAdvice注解,实现ResponseBodyAdvice接口,重写support, beforeBodyWrite方法 统一结果类ResultResponse Setter Getter public cla…

统一返回结果

  1. 定义统一返回结果类ResultResponse
  2. 定义新注解@ResponseResult来标记需要拦截的方法或类
  3. 添加RestControllerAdvice注解,实现ResponseBodyAdvice接口,重写support, beforeBodyWrite方法

统一结果类ResultResponse

@Setter
@Getter
public class ResultResponse<T> {/*** 响应代码*/private String code;/*** 响应消息*/private String message;/*** 响应结果*/private T result;public ResultResponse() {}public ResultResponse(BaseErrorInfoInterface errorInfo) {this.code = errorInfo.getResultCode();this.message = errorInfo.getResultMsg();}/*** 成功*/public static <T> ResultResponse<T> success() {return success(null);}/*** 成功*/public static <T> ResultResponse<T> success(T data) {ResultResponse<T> rb = new ResultResponse<>();rb.setCode(ExceptionEnum.SUCCESS.getResultCode());rb.setMessage(ExceptionEnum.SUCCESS.getResultMsg());rb.setResult(data);return rb;}/*** 失败*/public static <T> ResultResponse<T> error(BaseErrorInfoInterface errorInfo) {ResultResponse<T> rb = new ResultResponse<>();rb.setCode(errorInfo.getResultCode());rb.setMessage(errorInfo.getResultMsg());rb.setResult(null);return rb;}/*** 失败*/public static <T> ResultResponse<T> error(String code, String message) {ResultResponse<T> rb = new ResultResponse<>();rb.setCode(code);rb.setMessage(message);rb.setResult(null);return rb;}/*** 失败*/public static <T> ResultResponse<T> error(String message) {ResultResponse<T> rb = new ResultResponse<>();rb.setCode("-1");rb.setMessage(message);rb.setResult(null);return rb;}@Overridepublic String toString() {return JSONObject.toJSONString(this);}}

定义新注解ResponseResult

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Documented
public @interface ResponseResult {
}

ResponseResultBodyAdvice类

  1. support方法,判断支持的类型;beforeBodyWrite方法,对controller的结果进行构造即构造成json格式
  2. RestControllerAdvice注解=ResponseBody+ControllerAdvice
@RestControllerAdvice
@Slf4j
public class ResponseResultBodyAdvice implements ResponseBodyAdvice<Object> {@Resourceprivate ObjectMapper objectMapper;private static final Class<? extends Annotation> ANNOTATION_TYPE = ResponseResult.class;@Overridepublic boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {return AnnotatedElementUtils.hasAnnotation(returnType.getContainingClass(), ANNOTATION_TYPE) || returnType.hasMethodAnnotation(ANNOTATION_TYPE);}@SneakyThrows@Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {// 如果返回类型是string,那么springmvc是直接返回的,此时需要手动转化为jsonClass<?> returnClass = returnType.getMethod().getReturnType();if (body instanceof String || Objects.equals(returnClass, String.class)) {return objectMapper.writeValueAsString(ResultResponse.success(body));}// 防止重复包裹的问题出现if (body instanceof ResultResponse) {return body;}return ResultResponse.success(body);}
}

统一捕获异常

@ExceptionHandler(value = BizException.class) 捕获自定义异常

@ControllerAdvice
public class GlobalExceptionHandler {private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);/*** 处理自定义的业务异常** @param req* @param e* @return*/@ExceptionHandler(value = BizException.class)@ResponseBodypublic ResultResponse<Void> bizExceptionHandler(HttpServletRequest req, BizException e) {logger.error("发生业务异常!原因是:{}", e.getErrorMsg());return ResultResponse.error(e.getErrorCode(), e.getErrorMsg());}/*** 处理空指针的异常** @param req* @param e* @return*/@ExceptionHandler(value = NullPointerException.class)@ResponseBodypublic ResultResponse<Void> exceptionHandler(HttpServletRequest req, NullPointerException e) {logger.error("发生空指针异常!原因是:", e);return ResultResponse.error(ExceptionEnum.BODY_NOT_MATCH);}/*** 处理其他异常** @param req* @param e* @return*/@ExceptionHandler(value = Exception.class)@ResponseBodypublic ResultResponse<Void> exceptionHandler(HttpServletRequest req, Exception e) {logger.error("未知异常!原因是:", e);return ResultResponse.error(ExceptionEnum.INTERNAL_SERVER_ERROR);}
}
http://www.yayakq.cn/news/821245/

相关文章:

  • 写网站建设的软文做单位网站
  • 品牌建设方式有哪些?外贸工厂网站做seo多吗
  • 网站建设项目立项登记 表网站一年的 运营费用
  • 绵阳市建设厅官方网站如何制作自己想要的图片
  • vue 做pc网站可以吗厦门思总建设有限公司网站
  • 免费建站系统wordpress网站备份查询
  • 福田网站 建设seo信科wordpress post发布
  • 住房和城乡建设部网站防排烟wordpress把写博客按钮放在前台
  • 怎么做英文版的网站网站开发要学的代码
  • 兼职网网站建设方案建议书建立一个购物网站
  • 公司网站域名和空间使用费深圳网络推广哪家好
  • 帮我注册一个账号企业seo推广外包
  • 网站软件下载app旅游营销型网站
  • 企业营销型网站分析项目营销策划公司
  • 网站图片在手机上做多大最清晰西安工程建设信息网站
  • 网站根目录表示网站上内容列表怎么做的
  • 网站建设的一般过程包括哪些方面WordPress门户主题破解
  • 浅谈高校网站群的建设三大主流app开发平台
  • 临沂网站建设哪家公司好女装网站建设项目可行性分析
  • 六安网站建设 220做二手钢结构网站有哪些
  • 老河口网站建设app是什么意思怎么用
  • 宜昌网站建设开发费用龙岩网站建设极速建站
  • 码云可以做博客网站吗展芒设计网页
  • 哈尔滨专业网站建设定制做网站需要会什么软件
  • 电子公司网站源码百度经验官网入口
  • 网站 如何做后台维护php学生管理系统源码免费
  • 做门窗网站怎么做微信商城系统免费
  • 公司网站建设东莞自己做网站表白
  • 打开网址资料网站企业做网站的费用
  • 国外外贸网站大全遵义做网站 0852t