使用ResponseEntity统一返回数据

使用ResponseEntity统一返回状态码和数据

它是Spring提供的一个类,它内部封装了状态码,请求头,请求体等信息,可以根据自己的需要去设置状态码、请求体的信息。ResponseEntity中的泛型用于指定请求体的类型,并且ResponseEntity的优先级要高于@ResponseBody,如果返回值是ResponseEntity,即使存在ResponseBody或者@RestController注解,也默认不会生效,而是使用ResponseEntity

package com.sykj.why.handler;

import com.sykj.why.mongo.enums.exception.ResultEnum;
import com.sykj.why.util.BaseTools;
import com.sykj.why.util.Page;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 响应操作, 用于请求完成后, 对响应数据的操作
 */
public class Response {
    private final static String MESSAGE = "message";//消息
    private final static String CODE = "code";//响应码

    private Response() {

    }
	//HttpStatus:这是Spring提供的一个枚举类,其遵循RESTful风格封装了大量了响应状态码。详见org.springframework.http.HttpStatus;
    private static ResponseEntity<Object> getEntity(Object body, HttpStatus statusCode) {
        //一次获取所有Header,如果 Header中有多个参数,可以使用 MultiValueMap来接收参数值。
        //MultiValueMap继承以Map,是一个可以让key拥有多个value的
        MultiValueMap<String, String> headers = new HttpHeaders();
        List<String> contentType = new ArrayList<String>();
        contentType.add("application/json;charset=utf-8");
        headers.put("Content-Type", contentType);
        return new ResponseEntity<Object>(body, headers, statusCode);
    }


    /**
     * 请求成功,无需返回结果集
     */
    public static ResponseEntity<Object> success() {
        Map<String, Object> result = new HashMap<String, Object>();
        return getEntity(result, HttpStatus.OK);
    }

    /**
     * 请求成功,根据msg和code来设置响应
     * 多用于 添加、修改、删除、更新等提示信息。
     */
    public static ResponseEntity<Object> success(String msg) {
        Map<String, Object> vo = new HashMap<>();
        vo.put("sucFlag", true);
        vo.put("message", msg);
        vo.put("code", ResultEnum.SUCCESS.getCode());
        return getEntity(vo, HttpStatus.OK);
    }


    public static ResponseEntity<Object> success(String msg, Object object) {
        Map<String, Object> vo = new HashMap<>();
        vo.put("sucFlag", true);
        vo.put("message", msg);
        vo.put("code", ResultEnum.SUCCESS.getCode());
        vo.put("data", object);
        return getEntity(vo, HttpStatus.OK);
    }
    
    /**
     * 返回分页使用
     *
     * @param msg  响应信息
     * @param page 分页对象
     * @return 响应
     */
    public static ResponseEntity<Object> success(String msg, Page page) {
        Map<String, Object> vo = new HashMap<>();
        vo.put("sucFlag", true);
        vo.put("message", msg);
        vo.put("totalCount", page.getTotalCount());
        vo.put("pageSize", page.getTotalPageCount());
        vo.put("code", ResultEnum.SUCCESS.getCode());
        vo.put("data", page.getResult());
        return getEntity(vo, HttpStatus.OK);
    }


    /**
     * 请求成功,并返回请求结果集
     *
     * @param object 返回到客户端的对象
     * @return Spring mvc ResponseEntity
     */
    public static ResponseEntity<Object> success(Object object) {
        return getEntity(object, HttpStatus.OK);
    }


    /**
     * 服务器错误(new)   多用于controller 错误返回的信息展示
     *
     * @param msg  请求失败的错误信息
     * @param code
     * @return Spring mvc ResponseEntity
     */
    public static ResponseEntity<Object> serverError(String msg, Integer code) {
        Map<String, Object> vo = new HashMap<>();
        vo.put("sucFlag", false);
        vo.put("message", msg);
        vo.put("code", code);
//        return getEntity(vo, HttpStatus.INTERNAL_SERVER_ERROR);
        return getEntity(vo, HttpStatus.OK);
    }
}
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot通过使用统一数据返回格式可以提高开发效率和代码的可维护性。返回统一的JSON数据格式可以统一前后端之间的数据交互方式,减少沟通成本,并且提高了代码的可读性和可维护性。 在SpringBoot中,可以定义一个全局异常处理器(GlobalExceptionHandler),用于捕获和处理全局的异常。在异常处理器中,可以定义一个统一数据返回格式,包括状态码、提示信息和返回数据。当发生异常时,异常处理器会将异常信息封装成统一的JSON数据格式返回给前端,以便前端进行处理。 为了实现统一数据返回格式,可以定义一个响应对象(ResponseObject),包含对应的状态码、提示信息和返回数据。在业务逻辑处理中,统一使用ResponseObject来封装返回数据,然后再返回给前端。 在控制器层中,可以使用ResponseEntity对象来返回统一的JSON数据格式。通过使用ResponseEntity.ok()方法可以返回一个状态码为200的成功响应,然后将ResponseObject对象作为响应的数据。这样,无论是成功还是失败,都能以统一的JSON数据格式返回给前端。 在返回数据时,可以添加一些通用的字段,如请求ID、访问时间等,以便用于日志记录和跟踪。 通过采用统一的JSON数据返回格式,可以提高代码的可读性、可维护性和规范性,方便前后端的协作和沟通。同时,也可以方便后期的维护和扩展,减少了代码的冗余和重复编写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值