1.2. Http响应内容统一封装
我们在开发前端
和后端
进行交互服务过程中,受制于前后端的工作职责明确,在交互协议的定义上理解也较为不同,造成一个项目服务中重复定义交互内容以及编码上重复编写,不利于项目维护。所以基于此,将后端
按照约定请求URL路径,并传入相关参数,后端
服务器接收请求,进行业务处理,返回数据给前端,进行再次封装,供前端以及外部调用。
通常情况下我们后端
返回给前端
都会采用 JSON
的定义,具体如下:
{
// 返回状态码
code:integer,
// 返回信息描述
message:string,
// 返回值
data:object
}
- code状态码
在状态码的定义上,在满足业务需求的基础上,避免凌乱,一般业界同行做法就是参考HTTP请求返回的状态码。
具体如 百度 – HTTP状态码。
这里我贴出我将我项目中的常用的罗列出来,供大家参考。
package xyz.wongs.drunkard.base.message.enums;
/**
* @ClassName
* @Description
* 1000~1999 区间表示参数错误
* 2000~2999 区间表示用户错误
* 3000~3999 区间表示接口异常
* @author WCNGS@QQ.COM
* @Github <a>https://github.com/rothschil</a>
* @date 2020/8/2 13:31
* @Version 1.0.0
*/
public enum ResultCode {
/** 成功 **/
SUCCESS(0,"成功"),
/** 失败 **/
FAILURE(-1,"失败"),
EXCEPTION(201, "未知异常"),
RUNTIME_EXCEPTION(202, "运行时异常"),
NULL_POINTER_EXCEPTION(203, "空指针异常"),
CLASS_CAST_EXCEPTION(204, "类型转换异常"),
IO_EXCEPTION(205, "IO异常"),
SYSTEM_EXCEPTION(210, "系统异常"),
NOT_FOUND(404, "Not Found"),
/**
* 1000~1999 区间表示参数错误
*/
PARAMS_IS_INVALID(1001,"参数无效"),
PARAMS_IS_BANK(1002,"参数为空"),
PARAMS_TYPE_BIND_ERROR(1003,"参数类型错误"),
PARAMS_NOT_COMPLETE(1004,"参数缺失"),
/**
* 2000~2999 区间表示用户错误
*/
USER_NOT_LOGGED_IN(2001,"用户未登录,访问路径需要验证"),
USER_NOT_LOGIN_ERROR(2002,"用户不存在或密码错误"),
USER_ACCOUNT_FORBIDDEN(2003,"用户被禁用"),
USER_NOT_EXIST(2004,"用户不存在"),
USER_HAS_EXISTED(2005,"用户已存在"),
USER_IS_EXPIRED(2006,"用户账号已过期"),
USER_FIRST_LANDING(2007, "首次登录"),
USER_TOKEN_EXPIRED(2008,"Token过期"),
USER_TOKEN_GENERTATION_FAIL(2009,"生成Token失败"),
USER_SIGN_VERIFI_NOT_COMPLIANT(2010,"签名校验不合规"),
USER_PASSWORD_RESET_FAILED(2011, "重置密码失败"),
USER_UNKONWN_INDENTITY(2012, "未知身份"),
MANY_USER_LOGINS(2111,"多用户在线"),
TOO_MANY_PASSWD_ENTER(2112, "密码输入次数过多"),
VERIFICATION_CODE_INCORECT(2202,"图形验证码不正确"),
VERIFICATION_CODE_FAIL(2203,"图形验证码生产失败"),
/**
* 3000~3999 区间表示接口异常
*/
API_EXCEPTION(3000, "接口异常"),
API_NOT_FOUND_EXCEPTION(3002, "接口不存在"),
API_REQ_MORE_THAN_SET(3003, "接口访问过于频繁,请稍后再试"),
API_IDEMPOTENT_EXCEPTION(