springboot-Rest 接口返回统一格式数据

本文介绍了一个用于统一RESTful API响应格式的RestControllerHelper类,该类规范了前后端交互时的JSON数据结构,包括状态码、消息和数据字段。通过实例展示了如何在Spring Boot项目中使用此类来构建标准化的API响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 编写目的

编写一个RestControllerHelper类,统一规范一下前后端交互时的json格式。
格式如下:

{
  "msg": "success",
  "data": "json数据",
  "code": 200
}

2. RestControllerHelper类

package cn.langlang.langmovie.util;

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

/**
 * @author Smileyan
 */
public class RestControllerHelper {
    /**
     * RestControllerHelper的toJson常量
     */
    private static final String RESULT_CODE = "code";
    private static final String RESULT_MSG = "msg";
    private static final String RESULT_DATA = "data";

    /**
     * 200: 成功。
     * 401: 当前请求需要用户验证。
     * 403:权限错误。
     * 404: 请求的资源未找到。
     * 408:请求超时。
     */
    public static final int SUCCESS = 200;
    public static final int UNLOGIN = 401;
    public static final int FORBIDDEN = 403;
    public static final int NOT_FOUND = 404;
    public static final int TIMEOUT = 408;

    /**
     *  code: 状态码
     *  msg: 状态码消息
     *  data: 数据
     */
    private Integer code;
    private String msg;
    private Object data;

    public RestControllerHelper() {
        this.code = SUCCESS;
    }

    public RestControllerHelper(Integer code,Object data) {
        this.code = code;
        this.data = data;
    }

    public RestControllerHelper(Integer code,Object data,String msg) {
        this.code = code;
        this.data = data;
        this.msg = msg;
    }

    /**
     * toJsonMap
     * @return
     */
    public Map<String,Object> toJsonMap() {
        Map<String,Object> map = new HashMap<>(3);
        map.put(RESULT_CODE,this.code);
        map.put(RESULT_MSG,this.msg);
        map.put(RESULT_DATA,this.data);
        return map;
    }
    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 Object getData() {
        return data;
    }

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

3. 使用方法例子

package cn.langlang.langmovie.controller;

import cn.langlang.langmovie.util.RestControllerHelper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.Map;

/**
 * @author Smileyan
 */
@RestController
public class UserController {

    @RequestMapping("/test")
    private Map<String,Object> test(HttpServletResponse response) {
        RestControllerHelper helper = new RestControllerHelper();
        helper.setCode(RestControllerHelper.SUCCESS);
        helper.setMsg("success");
        // 这里setData可以是某个类的对象,可以是链表等等
        helper.setData(new Date());
        return  helper.toJsonMap();
    }
}

4. 总结

为了方便前后端的交互,最好是统一一下json格式,确保对方知道返回的结果是怎么样的。比如如果返回结果code是401,表示未登录,前端开发人员应该对其进行处理,提示没有登录,并跳转到登录页面等。

Smileyan 2019年4月11日

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smile-yan

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值