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("操作失败");
          }
      }
      
posted @ 2025-03-21 21:01  victoria6013  阅读(29)  评论(0)    收藏  举报