web项目前后端分离统一返回类


前言

在开发中约定是很重要的,我们在返回给前端的数据如果不统一的话,前端同事每一个接口都要做不同的处理,增加了开发难度,项目也不优雅。因此统一的返回就显得尤为重要。


一、定义返回状态枚举

这里我只定义了几个常用的状态,自己可以根据自己的需求多定义。

public enum HttpStatus {

    SUCCESS(200,"操作成功"),

    BAD_REQUEST(401,"参数列表错误"),

    NOT_FOUND(404,"资源,服务未找到"),

    ERROR(500, "操作失败");

    private Integer code;

    private String value;


    HttpStatus(int code, String value) {
        this.code = code;
        this.value = value;
    }

    public int getCode(){
        return this.code;
    }

    public String getValue(){
        return this.value;
    }
}

二、定义返回信息实体类

1、定义一个泛型类,因为数据是无法确定的,泛型才能装下各种类型的数据。
2、@Data是lombok插件的,可以自动添加get、set方法,让代码更优雅

import lombok.Data;
@Data
public class AjaxResult<T> {

    /**
     * 状态码
     */
    private int code;

    /**
     * 状态信息
     */
    private String msg;

    /**
     * 数据
     */
    private T data;

}

三、定义统一返回类

public class Result {

    private Result(){

    }

    public static AjaxResult success(){
        AjaxResult<Object> result = new AjaxResult<>();
        result.setCode(HttpStatus.SUCCESS.getCode());
        result.setMsg(HttpStatus.SUCCESS.getValue());
        return result;
    }

    public static AjaxResult success(String msg){
        AjaxResult<Object> result = new AjaxResult<>();
        result.setCode(HttpStatus.SUCCESS.getCode());
        result.setMsg(msg);
        return result;
    }

    public static <T> AjaxResult success(T data){
        AjaxResult<Object> result = new AjaxResult<>();
        result.setCode(HttpStatus.SUCCESS.getCode());
        result.setMsg(HttpStatus.SUCCESS.getValue());
        result.setData(data);
        return result;
    }

    public static <T> AjaxResult success(int code, String msg, T data){
        AjaxResult<Object> result = new AjaxResult<>();
        result.setCode(code);
        result.setMsg(msg);
        result.setData(data);
        return result;
    }

    public static AjaxResult error(){
        AjaxResult<Object> result = new AjaxResult<>();
        result.setCode(HttpStatus.ERROR.getCode());
        result.setMsg(HttpStatus.ERROR.getValue());
        return result;
    }

    public static AjaxResult error(String msg){
        AjaxResult<Object> result = new AjaxResult<>();
        result.setCode(HttpStatus.ERROR.getCode());
        result.setMsg(msg);
        return result;
    }
}


四、 测试

1、定义一个测试用的实体类

import lombok.Data;

@Data
public class User {

    /**
     * 姓名
     */
    private String name;

    /**
     * 年龄
     */
    private Integer age;
}

2、测试代码

import com.example.springbootest.entity.Result;
import com.example.springbootest.entity.AjaxResult;
import com.example.springbootest.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/test")
@Slf4j
public class Test {
    @GetMapping("/testResult")
    public AjaxResult testResult(){
        log.info("这是一个测试");
        User user = new User();
        user.setName("编程界的卡卡西");
        user.setAge(26);
        return Result.success(user);
    }
}

3、postman调用
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值