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

搭建国外网站的步骤网站设计杭州

搭建国外网站的步骤,网站设计杭州,海口市公司网站建设,个人做网站如何赚钱吗Session 认证和 Token 认证 过滤器和拦截器 SpringBoot统一返回和统一异常处理 上篇文章我们学习了基于 Token 认证的登录功能实现#xff0c;分别使用了过滤器和拦截器去实现登录功能#xff0c;这篇文章我们来学习项目中常用的统一返回结果和统一异常处理。 一、统一返… Session 认证和 Token 认证 过滤器和拦截器 SpringBoot统一返回和统一异常处理 上篇文章我们学习了基于 Token 认证的登录功能实现分别使用了过滤器和拦截器去实现登录功能这篇文章我们来学习项目中常用的统一返回结果和统一异常处理。 一、统一返回结果 前后端分离时代如果没有一个统一的数据返回格式前后端调试时前端开发人员会骂娘的同时约定相同的返回接口数据也有助于高效的工作。 通常统一返回的格式包含三部分 code状态码一般 200 表示正常message状态码对应的描述。data返回的数据 1.1、统一返回对象 新建一个 SpringBoot 项目定义通用的响应对象 package com.laoxiang.utils;import com.fasterxml.jackson.annotation.JsonInclude;import java.io.Serializable;/*** author db* version 1.0* description ResponseResult* since 2023/7/12*/ JsonInclude(JsonInclude.Include.NON_NULL) public class ResponseResultT implements Serializable {private static final long serialVersionUID 2233637474601103587L;// 接口响应状态码private Integer code;// 接口响应信息private String msg;// 接口响应的数据private T data;public ResponseResult() {this.code AppHttpCodeEnum.SUCCESS.getCode();this.msg AppHttpCodeEnum.SUCCESS.getMsg();}public ResponseResult(Integer code, T data) {this.code code;this.data data;}public ResponseResult(Integer code, String msg, T data) {this.code code;this.msg msg;this.data data;}public ResponseResult(Integer code, String msg) {this.code code;this.msg msg;}public static ResponseResult errorResult(int code, String msg) {ResponseResult result new ResponseResult();return result.error(code, msg);}public static ResponseResult okResult() {ResponseResult result new ResponseResult();return result;}public static ResponseResult okResult(int code, String msg) {ResponseResult result new ResponseResult();return result.ok(code, null, msg);}public static ResponseResult okResult(Object data) {ResponseResult result setAppHttpCodeEnum(AppHttpCodeEnum.SUCCESS, AppHttpCodeEnum.SUCCESS.getMsg());if (data ! null) {result.setData(data);}return result;}public static ResponseResult errorResult(AppHttpCodeEnum enums) {return setAppHttpCodeEnum(enums, enums.getMsg());}public static ResponseResult errorResult(AppHttpCodeEnum enums, String msg) {return setAppHttpCodeEnum(enums, msg);}public static ResponseResult setAppHttpCodeEnum(AppHttpCodeEnum enums) {return okResult(enums.getCode(), enums.getMsg());}private static ResponseResult setAppHttpCodeEnum(AppHttpCodeEnum enums, String msg) {return okResult(enums.getCode(), msg);}public ResponseResult? error(Integer code, String msg) {this.code code;this.msg msg;return this;}public ResponseResult? ok(Integer code, T data) {this.code code;this.data data;return this;}public ResponseResult? ok(Integer code, T data, String msg) {this.code code;this.data data;this.msg msg;return this;}public ResponseResult? ok(T data) {this.data data;return this;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}public T getData() {return data;}public void setData(T data) {this.data data;} }1.2、系统常量 上面代码中提到了常量 AppHttpCodeEnum定义自己的应用程序特定状态码来表示具体的情况。通过定义的状态码就可以知道具体代表什么意思。 package com.laoxiang.utils;/*** author db* version 1.0* description AppHttpCodeEnum* since 2023/7/12*/ public enum AppHttpCodeEnum {// 成功SUCCESS(200,操作成功),// 失败ERROR(500,操作失败),int code;String msg;AppHttpCodeEnum(int code, String errorMessage){this.code code;this.msg errorMessage;}public int getCode() {return code;}public String getMsg() {return msg;} }1.3、web 层统一响应结果 下面的例子可以看到在实际项目中接口返回值。 二、统一异常处理 程序开发中不可避免的会遇到异常现象如果不进行处理遇到异常时开发人员不能清晰地处理问题或者使用 try{...}catch{...} 代码块进行处理但是满屏的 try{...}catch{...} 代码块造成代码过于臃肿。 有没有更好的处理方式呢全局统一异常处理应运而生。ControllerAdvice 注解搭配 ExceptionHandler 进行全局统一异常处理。 2.1、ControllerAdvice注解 ControllerAdvice注解用于声明一个全局控制器 Advice相当于把 ExceptionHandler、InitBinder 和 ModelAttribute 注解的方法集中到一个地方。放在特定类上被认为是全局异常处理器。 2.2、ExceptionHandler 注解 用于定义异常处理方法处理特定类型的异常。放在全局异常处理器类中的具体方法上。 通过这两个注解的配合可以实现全局的异常处理。当控制器中抛出异常时SpringBoot 会自动调用匹配的 ExceptionHandler 方法来处理异常并返回定义的响应。 步骤如下 新建一个统一异常处理类类上标注 RestControllerAdvice 注解在方法上标注 ExceptionHandler 注解并且指定需要捕获的异常可以同时捕获多个。 新建 exception 包在包下新建 GlobalExceptionHandler 类。代码如下 package com.duan.execption;import com.duan.pojo.AppHttpCodeEnum; import com.duan.pojo.ResponseResult; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice;/*** author db* version 1.0* description GlobalExceptionHandler* since 2023/7/23*/ RestControllerAdvice Slf4j public class GlobalExceptionHandler {// 全局异常ExceptionHandler(Exception.class)public ResponseResult exceptionHandler(Exception e){//打印异常信息log.error(出现了异常 {},e);//从异常对象中获取提示信息封装返回return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR.getCode(),e.getMessage());}// 自定义异常ExceptionHandler(LxAdminException.class)public ResponseResult LxAdminExceptionHandler(LxAdminException e){//打印异常信息log.error(出现了异常 {},e);//从异常对象中获取提示信息封装返回return ResponseResult.errorResult(e.getCode(),e.getMsg());}}在exception包下新建自定义异常处理类 LxAdminException package com.duan.execption;import com.duan.pojo.AppHttpCodeEnum; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;/*** author db* version 1.0* description LxAdminException 自定义异常* since 2023/7/23*/ Data AllArgsConstructor NoArgsConstructor public class LxAdminException extends RuntimeException{private int code;private String msg;public LxAdminException(AppHttpCodeEnum httpCodeEnum) {super(httpCodeEnum.getMsg());this.code httpCodeEnum.getCode();this.msg httpCodeEnum.getMsg();} }2.3、统一异常处理使用 在业务开发中可以在 service 层处理业务时可以手动抛出异常由全局异常处理器处理进行统一处理。 package com.duan.controller;import com.duan.execption.LxAdminException; import com.duan.pojo.AppHttpCodeEnum; import com.duan.pojo.ResponseResult; import com.duan.pojo.User; import com.duan.utils.JWTUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController;import java.util.HashMap; import java.util.UUID;/*** author db* version 1.0* description LoginController* since 2023/12/19*/ RestController Slf4j public class LoginController {PostMapping(/login)public ResponseResult login(RequestBody User user){log.info(这是正常日志);if(!admin.equals(user.getUsername()) !123456.equals(user.getPassword())){throw new LxAdminException(AppHttpCodeEnum.LOGIN_ERROR);}else{HashMapString, Object map new HashMap();map.put(id, UUID.randomUUID().toString());// 生成tokenString token JWTUtils.generateJwt(map);return ResponseResult.okResult(token);}}}当我们请求接口时假如用户名称或者密码错误接口就会响应 {code: 505,msg: 用户名或密码错误,data: null }实际开发中还有许多的异常需要捕获比如 Token 失效、过期等异常 如果整合了其他的框架还要注意这些框架抛出的异常比如Spring Security 等框架。 代码地址https://gitee.com/duan138/practice-code/tree/dev/resultException 三、总结 在 SpringBoot 项目中统一返回和统一异常处理是非常常用的一环它们能提高应用的可读性和可维护性统一返回有助于保持代码一致性和规范性在前后端联调时更加方便统一异常处理减少了代码冗余对异常处理更加易于管理。 下一篇我们来看看 SpringBoot 项目中怎么进行日志处理。 改变你能改变的接受你不能改变的关注公众号程序员康康一起成长共同进步。
http://www.pierceye.com/news/978821/

相关文章:

  • 较好的网站建设公司网站备案填了虚假座机能过吗
  • 网站权重是怎么提升的node怎么做网站
  • 珠海哪家做企业网站公司好网站开发常用图标 图像
  • 上海先进网站设计丹阳如何做百度的网站
  • dw免费网站模板下载ui设计培训课程
  • 襄城县城乡建设管理局网站网站推广要具备什么
  • 用vue做网站的实例wordpress redis缓存
  • dedecms模板站源码wordpress上传主题错误
  • 网站需求方案手机网站加载效果
  • 国外空间网站源码网站电子备案
  • 最好网站建设公司运营团队南山医院网站建设
  • 微小店网站建设官网杭州网站设计上市公司
  • 合肥装饰公司做的好的网站采购销售管理软件
  • wordpress做后端wordpress的seo优化
  • 学术会议网站怎么做教学工作总结
  • 可以在线做试卷的网站互联网营销与管理
  • 国际重大新闻湛江做网站优化
  • 做app的模板下载网站有哪些长春网上建设网站
  • 建网站多少钱 万户项目管理软件手机版
  • 福州做网站需要多少钱win10 安装wordpress
  • 网站建设大约需要多少钱软文推广平台排名
  • 开发公司 网站建设价格seo优化排名怎么做
  • 网站开发如何使用微信登录鞍山专业做网站公司
  • 电子商务网站建设设计报告关于网站建设的指标
  • 电子商务网站建设实训展示网络技术就业方向
  • 乐清装修网站哪个好wordpress文章商品模板
  • 可以做超链接或锚文本的网站有哪些张店网站制作哪家好
  • 企业商城网站建设价格怎么自己建立公司网站
  • 网站上的广告怎么做工业设计是什么
  • 制作网站用c#做前台设计师合作网站