springboot-接口返回统一规范封装的方法
目录:
Constants ---常量
package com.全局捕获.common;
public interface Constants {
String CODE_200 = "200"; //成功
String CODE_401 = "401"; // 权限不足
String CODE_400 = "400"; // 参数错误
String CODE_500 = "500"; // 系统错误
String CODE_600 = "600"; // 其他业务异常
String DICT_TYPE_ICON = "icon";
String FILES_KEY = "FILES_FRONT_ALL";
}
Result ----扔出前端响应的模版
package com.全局捕获.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 接口统一返回包装类
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
private String code;
private String msg;
private Object data;
public static Result success() {
return new Result(Constants.CODE_200, "", null);
}
public static Result success(Object data) {
return new Result(Constants.CODE_200, "", data);
}
public static Result error(String code, String msg) {
return new Result(code, msg, null);
}
public static Result error() {
return new Result(Constants.CODE_500, "系统错误", null);
}
}
UserDTO
package com.全局捕获.Control.dto;
import lombok.Data;
/**
* 接受前端请求的参数
*/
@Data
public class UserDTO {
private String username;
}
TestControl
package com.全局捕获.Control;
import com.全局捕获.Control.dto.UserDTO;
import com.全局捕获.common.Constants;
import com.全局捕获.common.Result;
import com.全局捕获.exception.ServiceException;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/user")
public class TestControl {
@PostMapping("/login")
public Result login(@RequestBody UserDTO userDTO) {
String username = userDTO.getUsername();
System.out.println(username);
System.out.println(username.getClass().getName());
if (username.equals("123")){
--打印结果Result(code=400, msg=参数错误, data=null) 因为注解使用@RestController,返回实体类会自动映接口返回json
System.out.println(Result.error(Constants.CODE_400, "参数错误"));
return Result.error(Constants.CODE_400, "参数错误");
}
if (username.equals("444")) {
System.out.println(11111);
throw new ServiceException(Constants.CODE_600, "用户名或密码错误");
}
return Result.success("正常请求");
}
}
GlobalExceptionHandler -----如果有逻辑调用 ServiceException 方法,那么这边会接收他对应的参数且去执行handle方法
package com.全局捕获.exception;
import com.全局捕获.common.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* 如果抛出的的是ServiceException,则调用该方法
* @param se 业务异常
* @return Result
*/
@ExceptionHandler(ServiceException.class)
@ResponseBody
public Result handle(ServiceException se){
return Result.error(se.getCode(), se.getMessage());
}
}
ServiceException
package com.全局捕获.exception;
import lombok.Getter;
/**
* 自定义异常
*/
@Getter
public class ServiceException extends RuntimeException {
private String code;
public ServiceException(String code, String msg) {
super(msg);
this.code = code;
}
}
图解:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2021-06-09 高级sql 使用
2020-06-09 redis基础命令第一波
2020-06-09 html 各种好看的样式
2020-06-09 jenkins无法嵌套进去ifrome 的问题解决