# 接口规范

组件包基于严选接口规范封装了 AjaxResult 类 (兼容 Tiger4)

# 规范说明

典型结构

// 正常返回,查询单个对象
{
    code: 200,
    data: { id: 100, name: "姓名" },
    message: "操作成功"
}
// 正常返回,查询不分页的列表数据
{
    code: 200,
    data: [{ id: 100, name: "姓名" }, { id: 101, name: "姓名" }]
}
// 正常返回,查询分页的列表数据
{
    code: 200,
    data: {
        // 分页信息,按以下字段
        pagination: { page: 1, size: 20, totalPage: 10, total: 200 }, 
        result: [{ id: 100, name: "姓名" }, { id: 101, name: "姓名" }]
    }
}
// 异常返回
{
    code: 400,
    data: null,
    message: "服务器异常,操作失败"
}

字段说明

  • code 业务状态码,number类型,Required,200为正常返回,其它值均代表服务器执行失败
  • data 业务数据,any类型,Optional。正常状态下可返回业务数据,异常状态下也可用于返回详细的错误信息,如批量处理时异常的对象列表等
  • message 消息文本内容,string类型,Optional,放一些直接用于前端显示的提示信息
  • 额外的字段 除code、data、message之外的字段,尽量避免使用

# 通用返回格式

# 自动修正说明

# 调用方式

const requestData = { code: '200', data: { name: 'test'}, msg: '操作成功'};
// 通过调用方法
AjaxResult.from<User>(requestData)
// 被修正为
{ code: 200, data: { name: 'test'}, message: '操作成功', msg: '操作成功'};

# code字段的修正

  • 问题:当前各业务中,code存在数字和数字字符串两种类型,如 200 和 "200",
  • 处理方案:统一修正为数字,默认为500

# message字段的修正

  • 问题:信息描述字段当前有 errorCode/desc/errorString/message/msg
  • 处理方案:统一复制到message,同时保留原字段,以作兼容,统一后会考虑删除原字段

# data为空的修正

  • 问题:数据为空的情况下,有多种情况 data:null/undefined/空数组
  • 统一方案:无法统一处理,提供util来判断这三种情况是空的,isDataEmpty

# 构建AjaxResult对象输出

// 构建一个对象查询结果,正常返回
AjaxResult.success(
    // 对象数据
    { name: 'xx', uid: 'uid@corp' }
);


// 构建一个不带分页信息的列表查询结果,正常返回
AjaxResult.success(
    // 列表数据
    [{ name: 'xx', uid: 'uid@corp' }]
);


// 构建一个带分页信息的列表查询结果
AjaxSearchResult.success({
    // 分页信息
    pagination: { page: 1, size: 20, totalPage: 10, total: 200 }, 
    // 列表数据
    result: [{ name: 'xx', uid: 'uid@corp' }]
});

# 构建AjaxResult异常状态码

统一使用AjaxResult.xx去构建

AjaxResult.notFound('找不到用户');