spring boot 给返回值加状态 BaseData
2024-09-12 18:55:07
JavaWeb开发中,需要给前端返回的数据加上一些头部的状态信息,来表示请求成功或失败的状态原因
一、数据添加状态信息
1.新建BaseData
public class BaseData<T> { private String returnCode;
private String returnMsg;
private T data;
//其他的get set toString 方法略
}
2.定义工具类:
public final class ReturnInfoUtils {
private ReturnInfoUtils(){}
//返回状态信息
public static final String SUCCESSCODE="100";
public static final String SUCCESSMSG="操作成功";
public static final String FAILCODE="500";
public static final String FAILMSG="操作失败";
}
3.定义注解:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ReturnWrapper { String returnCode() default ReturnInfoUtils.SUCCESSCODE;
String returnMsg() default ReturnInfoUtils.SUCCESSMSG;
}
4.新建类继承AbstractMappingJacksonResponseBodyAdvice
并重写一个切面方法beforeBodyWriteInternal
package com.zpark.tools.interceptor; import com.zpark.response.ReturnDto;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJacksonValue;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.AbstractMappingJacksonResponseBodyAdvice; /**
* @author cosmo
* @Title: CommonWrsControllerAdvice
* @ProjectName
* @Description: TODO
* @date
*/
@RestControllerAdvice
public class CommonWrsControllerAdvice extends AbstractMappingJacksonResponseBodyAdvice {
@Override
protected void beforeBodyWriteInternal(MappingJacksonValue mappingJacksonValue, MediaType mediaType, MethodParameter methodParameter, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
if (methodParameter.getMethod().isAnnotationPresent(RerutnWrapper.class)) {
mappingJacksonValue.setValue(getWrapperResponse(methodParameter,serverHttpRequest, mappingJacksonValue.getValue()));
}
} private ReturnDto getWrapperResponse(MethodParameter returnType, ServerHttpRequest req, Object data) {
ReturnWrapper wrapper=returnType.getMethod().getAnnotation(ReturnWrapper.class);
BaseData = new BaseData();
returnDto.setData(data);
returnDto.setreturnCode(wrapper.ReturnCode());
return returnDto;
}
}
就可以用注解来返回的数据
/**
* 测试.
*
* @return the attachment info
*/
@ResponseBody
@RequestMapping(value = {"test"})
@RestWrapper(msg = ReturnInfoUtils.GETSUCCESS)
public List<Employee> test() {
List<Employee> employeeList=new ArrayList<>();
Employee employee=new Employee();
employee.setName("lisi");
employeeList.add(employee);
return employeeList;
}
返回数据:
{
"returnCode": "SUCCESS",
"returnMsg": "操作成功",
"data": [
{
"name": "lisi"
}
]
}
最新文章
- - >;code vs 1475 m进制转十进制
- 身份证校验(java)
- django redirect的几种方式
- NOIp2010 关押罪犯
- Struts+Hibernate+jsp页面 实现分页
- UnityVS 2013的使用
- Netsharp快速入门(之14) 销售管理(报表A 热销滞销品统计)
- 关于MapReduce
- svn各种问题总结
- webservice跨域上传图片
- Android学习笔记(二)Git和Github
- MongoDB的安装和配置(Windows系统)及遇到的常见问题解答
- 对图片进行索引,存入数据库sqlite3中,实现快速搜索打开
- [SQL]LeetCode596. 超过5名学生的课 | Classes More Than 5 Students
- 网页安全政策";(Content Security Policy,缩写 CSP)
- 关系数据库、NoSQL和NewSQL数据库产品分类
- android recovery 升级之USB设备挂载
- MT【36】反函数有关的一道题
- Win10系列:VC++绘制几何图形1
- vue-webpack项目本地开发环境设置代理解决跨域问题