从零搭建 Spring Boot 后端项目(六)

小鱼儿 2023-02-28 05:47 92阅读 0赞

简介

这一小节主要是为了,统一请求结果格式

步骤

  • 在提倡前后端分离的当下,统一返回结果就显得尤其重要,在com.example.backend_template.utils下新增ResultData类

    1. package com.example.backend_template.utils;
    2. /**
    3. * @ClassName ResultData 封装结果集成统一的json样式
    4. * @Description
    5. * @Author L
    6. * @Date Create by 2020/7/2
    7. */
    8. public class ResultData<T> {
    9. // 信息状态码
    10. private Integer code;
    11. // 提示信息
    12. private String msg;
    13. // 返回的数据
    14. private T Data;
    15. public Integer getCode() {
    16. return code;
    17. }
    18. public void setCode(Integer code) {
    19. this.code = code;
    20. }
    21. public String getMsg() {
    22. return msg;
    23. }
    24. public void setMsg(String msg) {
    25. this.msg = msg;
    26. }
    27. public T getData() {
    28. return Data;
    29. }
    30. public void setData(T data) {
    31. Data = data;
    32. }
    33. }
  • 为了防止重复创建ResultData,set()值产生大量的重复代码,这里封装一个工具类,用于封装常用返回数据在com.example.backend_template.utils下新建ResultUtils类

    1. package com.example.backend_template.utils;
    2. /**
    3. * @ClassName ResultUtils
    4. * @Description
    5. * @Author L
    6. * @Date Create by 2020/7/2
    7. */
    8. public class ResultUtils {
    9. // 统一结果集对象
    10. private static ResultData<Object> resultData = new ResultData<>();
    11. /**
    12. * 成功时调用的函数
    13. *
    14. * @param object 要返回的对象
    15. * @return
    16. */
    17. public static ResultData<Object> success(Object object) {
    18. resultData.setCode(0);
    19. resultData.setMsg("success");
    20. resultData.setData(object);
    21. return resultData;
    22. }
    23. /**
    24. * 成功时,如果没有要返回的对象,调用此方法
    25. *
    26. * @return
    27. */
    28. public static ResultData<Object> success() {
    29. return success(null);
    30. }
    31. /**
    32. * 失败时调用的函数
    33. *
    34. * @param code 要返回的状态码
    35. * @param msg 要返回的信息
    36. * @return
    37. */
    38. public static ResultData<Object> fail(Integer code, String msg) {
    39. resultData.setCode(code);
    40. resultData.setMsg(msg);
    41. return resultData;
    42. }
    43. /**
    44. * 失败时调用的函数
    45. *
    46. * @param code 要返回的状态码
    47. * @param msg 要返回的信息
    48. * @param object 要返回的具体错误信息
    49. * @return
    50. */
    51. public static ResultData<Object> fail(Integer code, String msg, Object object) {
    52. resultData.setCode(code);
    53. resultData.setMsg(msg);
    54. resultData.setData(object);
    55. return resultData;
    56. }
    57. }
  • 定义常见的响应码枚举,可根据业务需求自行添加,在com.example.backend_template.constant下新建ResultCode类

    1. package com.example.backend_template.constant;
    2. /**
    3. * @Description
    4. * @Author L
    5. * @Date Create by 2020/7/2
    6. */
    7. public enum ResultCode {
    8. // 成功
    9. SUCCESS(200),
    10. // 失败
    11. FAIL(400),
    12. // 未认证(签名错误)
    13. UNAUTHORIZED(401),
    14. // 接口不存在
    15. NOT_FOUND(404),
    16. // 服务器内部错误
    17. INTERNAL_SERVER_ERROR(500);
    18. private int code;
    19. ResultCode(int code) {
    20. this.code = code;
    21. }
    22. public int getCode() {
    23. return code;
    24. }
    25. public void setCode(int code) {
    26. this.code = code;
    27. }
    28. }

注:这里统一的返回结果,只能保证我们没有抛出异常的情况,统一返回结果,但是程序抛出异常后,返回结果将不再统一,此时我们需要全局异常处理,再统一返回数据,下面会写到

测试

这里可以把controller返回的数据放到ResultData类的data下返回,之后会有演示,这里就不测试了

项目地址

项目介绍:从零搭建 Spring Boot 后端项目
代码地址:https://github.com/xiaoxiamo/backend-template

下一篇

七、代码自动生成

发表评论

表情:
评论列表 (有 0 条评论,92人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Spring Boot 项目

    简介 一个基于 Spring Boot 的后端开发模板,主要用于减少平时重复的工作量,以及使开发有良好的开发规范,主要功能包括但不限于权限管理、在线接口文档、日志记录、单