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类的更多相关文章

  1. Spring统一返回Json工具类,带分页信息

    前言: 项目做前后端分离时,我们会经常提供Json数据给前端,如果有一个统一的Json格式返回工具类,那么将大大提高开发效率和减低沟通成本. 此Json响应工具类,支持带分页信息,支持泛型,支持Htt ...

  2. ASP.NET Core 2.2 WebApi 系列【八】统一返回格式(返回值、模型验证、异常)

    现阶段,基本上都是前后端分离项目,这样一来,就需要前后端配合,没有统一返回格式,那么对接起来会很麻烦,浪费时间.我们需要把所有接口及异常错误信息都返回一定的Json格式,有利于前端处理,从而提高了工作 ...

  3. Spring Boot API 统一返回格式封装

    今天给大家带来的是Spring Boot API 统一返回格式封装,我们在做项目的时候API 接口返回是需要统一格式的,只有这样前端的同学才可对接口返回的数据做统一处理,也可以使前后端分离 模式的开发 ...

  4. 封装一个统一返回json结果类JsonResult

    import java.io.Serializable; public class JsonResult implements Serializable{ private static final l ...

  5. SpringBoot 如何统一后端返回格式?老鸟们都是这样玩的!

    大家好,我是飘渺. 今天我们来聊一聊在基于SpringBoot前后端分离开发模式下,如何友好的返回统一的标准格式以及如何优雅的处理全局异常. 首先我们来看看为什么要返回统一的标准格式? 为什么要对Sp ...

  6. SpringBoot 如何统一后端返回格式

    在前后端分离的项目中后端返回的格式一定要友好,不然会对前端的开发人员带来很多的工作量.那么SpringBoot如何做到统一的后端返回格式呢?今天我们一起来看看. 为什么要对SpringBoot返回统一 ...

  7. springboot统一返回json数据格式并配置系统异常拦截

    本文链接:https://blog.csdn.net/syystx/article/details/82870217通常进行前后端分离开发时我们需要定义统一的json数据交互格式并对系统未处理异常进行 ...

  8. 一百零一:CMS系统之自定义restful风格json返回格式和内容

    鉴于flask-restful用起来太麻烦,这里自定义json统一返回格式和内容 from flask import jsonify class HttpCode: """ ...

  9. Java封装接口统一返回数据模板

    现在大多数都使用前后端分离开发模式,前端通过Ajax请求访问后台服务器,后台返回JSON数据供前端操作,这里编写一个统一返回数据模板类,方便日后操作 public class R extends Ha ...

随机推荐

  1. 【豆科基因组】木豆Pigeonpea (Cajanus cajan) 292个自然群体重测序2017NG

    目录 一.来源 二.结果 一.来源 Whole-genome resequencing of 292 pigeonpea accessions identifies genomic regions a ...

  2. selenium+chrome抓取数据,运行js

    某些特殊的网站需要用selenium来抓取数据,比如用js加密的,破解难度大的 selenium支持linux和win,前提是必须安装python3,环境配置好 抓取代码: #!/usr/bin/en ...

  3. 4G网络 LTE、 FDD 和TD网络格式区别

    1.LTE是long term evolution的缩写,即长期演进计划,是3GPP组织推出的移动通信3G技术向4G过渡的中间标准,并不是真正意义上的4G通信. 2.FDD是移动通信系统中使用的全双工 ...

  4. 避免UE4项目VS中误改源码.h文件导致编译时间长

    最近几天两次触发VS中误改UE4源码头文件,导致需要编译大量源码的情况:再好的习惯也有不可靠的时候,还是需要可靠方案解决这个问题:官方提供了预编译版本(即从Launcher中下载的版本),但是对于程序 ...

  5. 巩固javaweb第一天

    巩固内容: 实例解析 <!DOCTYPE html> 声明为 HTML5 文档 <html> 元素是 HTML 页面的根元素 <head> 元素包含了文档的元(me ...

  6. HDFS05 NameNode和SecondaryNameNode

    NameNode和SecondaryNameNode(了解) 目录 NameNode和SecondaryNameNode(了解) NN 和 2NN 工作机制 NameNode工作机制 Secondar ...

  7. flink-----实时项目---day06-------1. 获取窗口迟到的数据 2.双流join(inner join和left join(有点小问题)) 3 订单Join案例(订单数据接入到kafka,订单数据的join实现,订单数据和迟到数据join的实现)

    1. 获取窗口迟到的数据 主要流程就是给迟到的数据打上标签,然后使用相应窗口流的实例调用sideOutputLateData(lateDataTag),从而获得窗口迟到的数据,进而进行相关的计算,具体 ...

  8. 4.1 python中调用rust程序

    概述 使用rust-cpython将rust程序做为python模块调用: 通常为了提高python的性能: 参考 https://github.com/dgrunwald/rust-cpython ...

  9. [项目总结]怎么获取TextView行数,为什么TextView获取行数为0?

    1 final TextView textView = new TextView(this); 2 ViewTreeObserver viewTreeObserver = textView.getVi ...

  10. 在Eclipse中运行OSGI工程出错的解决方案

    今天学习OSGI的过程中按照书上所述搭建好第一个helloworld插件工程,运行的过程中出现下面所示的错误: !SESSION 2014-06-09 21:04:49.038 ----------- ...