springboot接口统一规范封装
笔记参考:https://www.cnblogs.com/kaibindirver/p/16358813.html
目录:
Constants ---常量
1 package com.全局捕获.common; 2 3 public interface Constants { 4 5 String CODE_200 = "200"; //成功 6 String CODE_401 = "401"; // 权限不足 7 String CODE_400 = "400"; // 参数错误 8 String CODE_500 = "500"; // 系统错误 9 String CODE_600 = "600"; // 其他业务异常 10 11 String DICT_TYPE_ICON = "icon"; 12 13 String FILES_KEY = "FILES_FRONT_ALL"; 14 15 }
Result ----扔出前端响应的模版
1 package com.common; 2 3 import lombok.AllArgsConstructor; 4 import lombok.Data; 5 import lombok.NoArgsConstructor; 6 7 /** 8 * @author: Amim 9 * @year: 2022/9 10 **/ 11 @Data 12 @NoArgsConstructor 13 @AllArgsConstructor 14 public class Result { 15 16 private String code; 17 private String msg; 18 private Object data; 19 20 public static Result success() { 21 return new Result(Constants.CODE_200, "", null); 22 } 23 24 public static Result success(Object data) { 25 return new Result(Constants.CODE_200, "测试成功", data); 26 } 27 28 public static Result error(String code, String msg) { 29 return new Result(code, msg, null); 30 } 31 32 public static Result error(String s) { 33 return new Result(Constants.CODE_500, "系统错误", null); 34 } 35 36 }
UserDTO
1 package com.Control.dto; 2 3 import lombok.Data; 4 5 /** 6 * @author: Amim 7 * @year: 2022/9 8 **/ 9 10 @Data 11 public class UserDTO { 12 private String username; 13 }
CatFood
1 package com.Control; 2 3 import com.Service.CatFoodService; 4 import com.common.Constants; 5 import com.common.Result; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.web.bind.annotation.GetMapping; 8 import org.springframework.web.bind.annotation.PostMapping; 9 import org.springframework.web.bind.annotation.RequestMapping; 10 import org.springframework.web.bind.annotation.RestController; 11 12 /** 13 * @author: Amim 14 * @year: 2022/9 15 **/ 16 17 @RestController 18 @RequestMapping("/food") 19 public class CatFood { 20 21 @Autowired 22 CatFoodService catFoodService; 23 24 //给猫粮记录的接口 25 @PostMapping("/addfoodtime") 26 public Object GiveFood() { 27 try { 28 String ff = catFoodService.MarkFood(); 29 // return catFoodService.MarkFood(); 30 return Result.success(ff); 31 } catch (Exception e) { 32 System.out.println("看这里" + e); 33 return Result.error(Constants.CODE_401, e.getClass().toString()); 34 } 35 } 36 37 //记录水的接口 38 @PostMapping("/addwatertime") 39 public Result GiveWater() { 40 try { 41 String dd = catFoodService.MarkWater(); 42 // return catFoodService.MarkWater(); 43 return Result.success(dd); 44 } catch (Exception e) { 45 System.out.println("看这里" + e); 46 return Result.error(Constants.CODE_401, e.getClass().toString()); 47 } 48 } 49 //获取给水的接口 50 @GetMapping("/getwatertime") 51 public Result GetWater(){ 52 try { 53 String tt = catFoodService.GetWaterList(); 54 // return catFoodService.GetWaterList(); 55 return Result.success(tt); 56 } catch (Exception e) { 57 System.out.println("看这里" + e); 58 return Result.error(Constants.CODE_401, e.getClass().toString()); 59 } 60 } 61 }
GlobalExceptionHandler -----如果有逻辑调用 ServiceException 方法,那么这边会接收他对应的参数且去执行handle方
1 package com.exception; 2 3 import com.common.Result; 4 import org.springframework.web.bind.annotation.ControllerAdvice; 5 import org.springframework.web.bind.annotation.ExceptionHandler; 6 import org.springframework.web.bind.annotation.ResponseBody; 7 8 /** 9 * @author: Amim 10 * @year: 2022/9 11 **/ 12 @ControllerAdvice 13 public class GlobalExceptionHandler { 14 15 /** 16 * 如果抛出的的是ServiceException,则调用该方法 17 * @param se 业务异常 18 * @return Result 19 */ 20 @ExceptionHandler(ServiceException.class) 21 @ResponseBody 22 public Result handle(ServiceException se){ 23 return Result.error(se.getCode(), se.getMessage()); 24 } 25 26 }
ServiceException
1 package com.exception; 2 3 import lombok.Getter; 4 5 /** 6 * @author: Amim 7 * @year: 2022/9 8 **/ 9 @Getter 10 public class ServiceException extends RuntimeException { 11 private String code; 12 13 public ServiceException(String code, String msg) { 14 super(msg); 15 this.code = code; 16 } 17 18 }