JavaWeb学习(十三):Web后端开发 —— 开发规范
目录
- JavaWeb学习(十三):Web后端开发 —— 开发规范
- Restful
- 统一响应结果
- 异常处理
本文为个人学习记录,内容学习自 黑马程序员
Restful
-
Restful:REpresentational State Transfer,表述性状态转换,它是一种软件架构风格
-
传统风格:
- 缺点:没有统一的标准,增加了后期的维护成本
http://localhost:8080/user/getById?id=1 # GET:查询id为1的用户 http://localhost:8080/user/saveUser # POST:新增用户 http://localhost:8080/user/updateUser # POST:修改用户 http://localhost:8080/user/deleteUser?id=1 # GET:删除id为1
-
REST 风格:
- 通过 URL 定位资源:例如 http://localhost:8080/users/1 访问的是主键为 1 的用户信息
- 通过 HTTP 动词描述操作:也即通过请求方式来确定是增、删、改、查的哪一种
http://localhost:8080/users/1 # GET:查询id为1的用户 http://localhost:8080/users # POST:新增用户 http://localhost:8080/users # PUT:修改用户 http://localhost:8080/users/1 # DELETE:删除id为1的用户
统一响应结果
前后端交互统一响应结果 Result:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {private Integer code;//响应码,1 代表成功; 0 代表失败private String msg; //响应信息 描述字符串private Object data; //返回的数据//增删改 成功响应public static Result success(){return new Result(1,"success",null);}//查询 成功响应public static Result success(Object data){return new Result(1,"success",data);}//失败响应public static Result error(String msg){return new Result(0,msg,null);}
}
异常处理
-
程序开发过程中不可避免的会遇到异常现象,而出现异常时默认返回的结果不会按照统一响应结果的格式,也即不会符合开发规范
-
默认返回的结果:
{"timestamp": "2025-03-20T09:02:22.984+00:00","status": 500,"error": "Internal Server Error","path": "/depts" }
-
解决方案:
-
方案一:在 Controller 层的方法中进行 try-catch 处理
- 原理:由于出现异常时若未进行处理则会向上抛出(抛出给方法调用者),因此可以在 Controller 层中的方法统一进行 try-catch 处理
- 优点:操作简单
- 缺点:Controller 层中的每一个方法都需要进行异常处理,代码臃肿,不推荐
-
方案二:全局异常处理器
- 原理:异常如果未进行处理则向上抛出,直至 Controller 层也未进行处理就抛出给全局异常处理器,全局异常处理器将其处理后再返回统一响应结果
- 优点:简单、优雅,推荐使用
// 使用@RestControllerAdvice注解标识这是一个全局异常处理器,@RestControllerAdvice=@ControllerAdvice+@ResponseBody @RestControllerAdvice public class GlobalExceptionHandler {// 使用@ExceptionHandler注解标识这是一个捕获异常的方法,其参数指定了要捕获的异常类型@ExceptionHandler(Exception.class)public Result ex(Exception ex) {// 返回统一响应结果中的错误提示信息return Result.error("操作失败");} }
-