JAVAWEB统一返回格式Result类
Result.java
public class Result<T> {
private Integer code;
private String msg;
private String message;
private T 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 String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public Result ok(T t){
this.setCode(1000);
this.setMsg("成功");
this.setMessage("成功");
this.setData(t);
return this;
}
public Result fail(String msg){
this.setCode(1001);
this.setMsg(msg);
this.setMessage(msg);
return this;
}
public Result() {
}
public Result(Integer code, String msg) {
this.code = code;
this.msg = msg;
this.setMessage(msg);
}
public Result(Integer code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
this.setMessage(msg);
}
}
使用
new Result<>().fail("缺少参数");
new Result<>().ok(data);
可以使用另一个
引入maven
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency> <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
R.java
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.SerializerFeature;
import lombok.Data; import java.io.Serializable; @Data
public class R<M> implements Serializable {
// 返回状态【0-成功,1-业务失败,999-表示系统异常】
@JSONField(ordinal = 1)
private int code;
// 返回信息
@JSONField(ordinal = 2)
private String message;
// 返回数据实体;
@JSONField(ordinal = 3,serialzeFeatures = {SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty})
private M data; private R(){} public static<M> R success(M m){
R r = new R();
r.setCode(0);
r.setMessage("success");
r.setData(m); return r;
} public static R successData(String data){
R r = new R();
r.setCode(0);
r.setMessage("success");
r.setData(data);
return r;
} public static<M> R success(){
R r = new R();
r.setCode(0);
r.setMessage("success");
return r;
} public static<M> R success(String msg){
R r = new R();
r.setCode(0);
r.setMessage(msg); return r;
} public static<M> R serviceFail(String msg){
R r = new R();
r.setCode(1);
r.setMessage(msg); return r;
} public static<M> R appFail(String msg){
R r = new R();
r.setCode(999);
r.setMessage(msg); return r;
} public static<M> R error(int code,String msg){
R r = new R();
r.setCode(code);
r.setMessage(msg); return r;
} public static<M> R serviceFail(){
R r = new R();
r.setCode(1);
r.setMessage("系统异常"); return r;
} }
ApiResult.java
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.StringUtils; import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; @Data
@Accessors(chain = true)
@Builder
@AllArgsConstructor
public class ApiResult<T> implements Serializable { private int code; private T data; private String msg; @JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date time; public ApiResult() { } public static ApiResult result(boolean flag){
if (flag){
return ok();
}
return fail("");
} public static ApiResult result(ApiCode apiCode){
return result(apiCode,null);
} public static ApiResult result(ApiCode apiCode,Object data){
return result(apiCode,null,data);
} public static ApiResult result(ApiCode apiCode,String msg,Object data){
String message = apiCode.getMsg();
if (StringUtils.isNotBlank(msg)){
message = msg;
}
return ApiResult.builder()
.code(apiCode.getCode())
.msg(message)
.data(data)
.time(new Date())
.build();
} public static ApiResult ok(){
return ok(null);
} public static ApiResult ok(Object data){
return result(ApiCode.SUCCESS,data);
} public static ApiResult ok(String key,Object value){
Map<String,Object> map = new HashMap<>();
map.put(key,value);
return ok(map);
} public static ApiResult fail(ApiCode apiCode){
return result(apiCode,null);
} public static ApiResult fail(String msg){
return result(ApiCode.FAIL,msg,null); } public static ApiResult fail(ApiCode apiCode,Object data){
if (ApiCode.SUCCESS == apiCode){
throw new RuntimeException("失败结果状态码不能为" + ApiCode.SUCCESS.getCode());
}
return result(apiCode,data); } public static ApiResult fail(String key,Object value){
Map<String,Object> map = new HashMap<>();
map.put(key,value);
return result(ApiCode.FAIL,map);
} }
常用返回API状态码
ApiCode.java
public enum ApiCode {
SUCCESS(200, "操作成功"),
UNAUTHORIZED(401, "非法访问"),
NOT_PERMISSION(403, "没有权限"),
NOT_FOUND(404, "你请求的路径不存在"),
FAIL(500, "操作失败"),
SYSTEM_EXCEPTION(5000,"系统异常!"),
PARAMETER_EXCEPTION(5001,"请求参数校验异常"),
PARAMETER_PARSE_EXCEPTION(5002,"请求参数解析异常"),
HTTP_MEDIA_TYPE_EXCEPTION(5003,"HTTP Media 类型异常"),
SYSTEM_LOGIN_EXCEPTION(5005,"系统登录异常"),
ERROR_AUTH(201,"用户名或密码错误"),
NEED_PARAM(202,"缺少参数"),
OLD_PWD_ERROR(203,"旧密码输入错误"),
;
private final int code;
private final String msg;
ApiCode(final int code, final String msg) {
this.code = code;
this.msg = msg;
}
public static ApiCode getApiCode(int code) {
ApiCode[] ecs = ApiCode.values();
for (ApiCode ec : ecs) {
if (ec.getCode() == code) {
return ec;
}
}
return SUCCESS;
}
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
JAVAWEB统一返回格式Result类的更多相关文章
- Spring统一返回Json工具类,带分页信息
前言: 项目做前后端分离时,我们会经常提供Json数据给前端,如果有一个统一的Json格式返回工具类,那么将大大提高开发效率和减低沟通成本. 此Json响应工具类,支持带分页信息,支持泛型,支持Htt ...
- ASP.NET Core 2.2 WebApi 系列【八】统一返回格式(返回值、模型验证、异常)
现阶段,基本上都是前后端分离项目,这样一来,就需要前后端配合,没有统一返回格式,那么对接起来会很麻烦,浪费时间.我们需要把所有接口及异常错误信息都返回一定的Json格式,有利于前端处理,从而提高了工作 ...
- Spring Boot API 统一返回格式封装
今天给大家带来的是Spring Boot API 统一返回格式封装,我们在做项目的时候API 接口返回是需要统一格式的,只有这样前端的同学才可对接口返回的数据做统一处理,也可以使前后端分离 模式的开发 ...
- 封装一个统一返回json结果类JsonResult
import java.io.Serializable; public class JsonResult implements Serializable{ private static final l ...
- SpringBoot 如何统一后端返回格式?老鸟们都是这样玩的!
大家好,我是飘渺. 今天我们来聊一聊在基于SpringBoot前后端分离开发模式下,如何友好的返回统一的标准格式以及如何优雅的处理全局异常. 首先我们来看看为什么要返回统一的标准格式? 为什么要对Sp ...
- SpringBoot 如何统一后端返回格式
在前后端分离的项目中后端返回的格式一定要友好,不然会对前端的开发人员带来很多的工作量.那么SpringBoot如何做到统一的后端返回格式呢?今天我们一起来看看. 为什么要对SpringBoot返回统一 ...
- springboot统一返回json数据格式并配置系统异常拦截
本文链接:https://blog.csdn.net/syystx/article/details/82870217通常进行前后端分离开发时我们需要定义统一的json数据交互格式并对系统未处理异常进行 ...
- 一百零一:CMS系统之自定义restful风格json返回格式和内容
鉴于flask-restful用起来太麻烦,这里自定义json统一返回格式和内容 from flask import jsonify class HttpCode: """ ...
- Java封装接口统一返回数据模板
现在大多数都使用前后端分离开发模式,前端通过Ajax请求访问后台服务器,后台返回JSON数据供前端操作,这里编写一个统一返回数据模板类,方便日后操作 public class R extends Ha ...
随机推荐
- Anaconda建立新的环境,出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url ...... 解决过程
2020.3.7准备scrapy,使用anaconda创建一个新的环境,执行"conda create -n scrapyEnv python=3.6",结果出现了"Co ...
- go变量、类的概念以及类的使用方式,嵌套结构体
go变量.类的概念以及类的使用方式,嵌套结构体 Go变量 go使用var声明变量,当声明变量时,这个变量对应的值总是会被初始化.这个值要么用指定的值初始化,要么用零值(即变 量类型的默认值)做初始化. ...
- 【R方差分析】蛋白质表达量多组比较
初始数据类似: 蛋白质组数据虽不是严格的正态分布,但目前最常用的检验方法还是T检验(两组比较)和方差分析(多组比较).这个话题值得深究,这里不展开. 主要是求多个蛋白的Pvalue值或FDR,用于差异 ...
- URI和URL的区别(转)
转载:http://www.cnblogs.com/gaojing/archive/2012/02/04/2413626.html 这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java B ...
- Python与Perl的相似与差别
Python version 3.7版本 00.命令行交互 命令行交互 Perl Python perl -e <Perl代码> #Unix/Linux/Windows/DOS 直 ...
- 8.深入TiDB:解析Hash Join实现原理
本文基于 TiDB release-5.1进行分析,需要用到 Go 1.16以后的版本 我的博客地址:https://www.luozhiyun.com/archives/631 所谓 Hash Jo ...
- c#表中信息点击跳转
OnRowCommand="gridInfoData_RowCommand" <Columns> <asp:ButtonField HeaderText=&quo ...
- == 和 equals() 方法的区别
== 在比较基本数据类型时,是比较两边的数据的值是否相等 // 整数类型 int num1 = 1; // 双精度浮点数类型 double num2 = 1.0; // 输出结果为 true Syst ...
- DP-Burst Balloons
leetcode312: https://leetcode.com/problems/burst-balloons/#/description Given n balloons, indexed fr ...
- VScode 使用 CMake 入门
参考 CMake 入门实战 在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下: 编写 CMake 配置文件 CMakeLists.txt . 执行命令 cmake PA ...