接口返回RESTful风格后端JSON时的状态码

第一种(推荐)

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel(value="返回信息映射类")
public class ReturnResult {

    @ApiModelProperty(value="返回数据")
    private Object data;

    @ApiModelProperty(value="返回状态码")
    private Integer code;

    @ApiModelProperty(value="返回信息提示")
    private String msg;

    //自定义code,msg,data
    private ReturnResult(Integer code, String msg,Object data) {
        this.data = data;
        this.code = code;
        this.msg = msg;
    }
    //自定义data
    private ReturnResult(Object data) {
        this.data = data;
        this.code = 0;
        this.msg = "success";
    }
    //自定义code,msg
    private ReturnResult(Integer code,String msg){
        this.code =  code;
        this.msg = msg;
    }


    public ReturnResult() {
        this.code = 0;
        this.msg = "success";
    }
    /***
     * 输入参数:
     *
     *
     * @param data
     * @param code
     * @param msg
     * @return 返回成功,包含total、code、msg、data
     */
    public static ReturnResult success(Integer code, String msg,Object data) {
        return new ReturnResult(code,msg,data);
    }

    public static ReturnResult success(Integer code,String msg){
        return new ReturnResult(code,msg);
    }

    public static ReturnResult error(Integer code,String msg){
        return new ReturnResult(code,msg);
    }


    /***
     * 输入参数:
     *
     * @param data
     * @return 返回成功,包含code、msg、data
     */
    public static ReturnResult success(Object data) {
        return new ReturnResult(data);
    }

    public static ReturnResult success(){
        return new ReturnResult();
    }


}

返回值直接

 	@PostMapping("/getInvoice")
    @ApiOperation(value = "查询未发货的发货单", notes = "查询未发货的发货单")
    @Transactional(rollbackFor = Exception.class)
    public ReturnResult getInvoice(@RequestBody Map map){
        return ReturnResult.success(0,"查询成功",cpckService.getInvoice(map));
    }

第二种

1.先创建一个状态码的类 – StatusCode

 /*
 * 定义了状态码的类
 */
public enum StatusCode {
     Success(0,"成功"),
    Fail(-1,"失败"),
    NotFound(10010,"不存在"),
    Entity_Not_Exist(10011,"实体信息不存在"),
    Invalid_Params(10012,"请求参数不合法!");
     private Integer code;
    private String msg;
    StatusCode(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
 public Integer getCode() {
        return code;
    }
public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

  1. 因为返回的为三部分(code、msg、data),所创建一个返回类
/**
 * 这个类定义了返回的json格式,即json含有哪些字段
 */
public class BaseResponse<T> {

    private Integer code;
    private String msg;
    private T data;

    public BaseResponse(StatusCode statusCode) {
        this.code=statusCode.getCode();
        this.msg=statusCode.getMsg();
    }

    public BaseResponse(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public BaseResponse(T data, StatusCode statusCode) {
        this.data = data;
        this.code=statusCode.getCode();
        this.msg=statusCode.getMsg();
    }

    public BaseResponse(Integer code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

3.创建一个Controller,返回的类型是BaseResponse,也就是要给前台传送类。然后把真实数据放入BaseResponse的data中。

@RequestMapping(value="springboot1")
public BaseResponse json() {
User user=new User();
user.setId(123);
user.setName("张三");
BaseResponse response=new BaseResponse(StatusCode.Success);
response.setData(user);
return response;
}

版权声明:本文为Y_R_Q原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。