JavaWeb学习(十三)
JavaWeb学习(十三):Web后端开发 —— 开发规范
本文为个人学习记录,内容学习自 黑马程序员
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("操作失败"); } }
-
浙公网安备 33010602011771号