栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring boot做统一返回值,统一返回数据传给前端

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring boot做统一返回值,统一返回数据传给前端

1.需要增加的依赖

    
        
            org.projectlombok
            lombok
            true
            1.18.24
        
        
            cn.hutool
            hutool-all
              5.8.2
        
    

2.model实体

package com.example.model;

import lombok.Data;
import java.io.Serializable;
@Data
//泛型返回可以为任何类型
public class HttpResponse implements Serializable {
    
    private int code;
    //返回错误信息
    private String message;
    private  T data;
}

2.做统一返回值的业务逻辑

package com.example.advise;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.example.model.HttpResponse;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import javax.servlet.http.HttpServletRequest;

//扫描要做统一返回项
@RestControllerAdvice(basePackages = {"com.example.controller"})
public class MyResoonseBody implements ResponseBodyAdvice {

    @Override
    public boolean supports(MethodParameter returnType, Class converterType) {
        return true;//所有都拦截
    }
   //处理异常
    @ExceptionHandler(value = Exception.class)
    public Object defaulErrorHander(HttpServletRequest req, Exception ex) {
        HttpResponse httpResponse = new HttpResponse<>();
        httpResponse.setCode(1);
        httpResponse.setMessage(ex.getMessage());
        return httpResponse;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType,
                                  MediaType selectedContentType,
                                  Class selectedConverterType,
                                  ServerHttpRequest request,
                                  ServerHttpResponse response) {
        HttpResponse httpResponse = new HttpResponse<>();
        //hutool初始message转换为空
        String message = StrUtil.EMPTY;
        httpResponse.setCode(0);
        httpResponse.setMessage(message);
        httpResponse.setData(body);
        //处理返回类型为字符串
        if(selectedConverterType == StringHttpMessageConverter.class){
           //hutool JSONUtil.toJsonStr字符串转换为json数据
            return JSONUtil.toJsonStr(httpResponse);
        } else{
            return httpResponse;
        }
    }
}
 

3.controller测试

package com.example.controller;

import cn.hutool.core.collection.CollUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

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

@RestController
public class Demo {
    @GetMapping("/test")
    public String test1() {
        return "么么哒";
    }
    @GetMapping("/test2")
    public List test2() {
    // CollUtil.newArrayList  hutool初始化一个集合
        ArrayList integers = CollUtil.newArrayList(1, 2, 3, 4);
        return integers;
    }
    @GetMapping("/test3")
    public String test3(){
        int b=0;
        int c=5/b;
        return "ok";
    }
}

结果展示

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号