公司接口规范

2017-09-18  本文已影响0人  小奉不在乎

接口规范

接口(API)通常我们都会采用 REST 方式来提供接口, 使用 JSON 来传输数据.
由前端(APP端)和后端一起协定接口规范的内容, 确定每一个接口的地址(URL), 输入(request)和输出(response), 必要的时候详细注释每一个字段的含义和数据类型.

具体接口的定义方式

接口要点

接口文档(示例)

{
    "code": 100000,
   "msg": {
        "message": "服务器正忙",
        "detail": {
            "exception": "PHP.util.List"
        }
    }
    "data": {
        "account": {
            "id": 10001,
            "communityId": 10002,
            "userName": "示例",
            "thumbPic": "http://api.yourdomain.com/upload/headPhoto/defaultPhoto.png",
            "token": "FWbfj5E4v6cn1tf385908m007fqssnsunrt"
        },
        "forum": {
            "forumId": 1,
            "forumName": "测试社区"
        },
        "build": {
            "buildId": 1,
            "buildName": "测未来"
        }
    }
}

请求接口

接口 Root Endpoint 推荐为: http://api.yourdomain.com.

向接口传递参数时, 推荐在 HTTP 请求体(body)中包含一个 JSON Object 作为接口的参数, 并设置 Content-Type: application/json; charset=utf-8. 如有少量参数可以补充到 URL query string 或者作为 Content-Type: application/x-www-form-urlencoded 放在请求体(body)中

例如

查询 VIP 用户的接口

POST /users?limit=10 HTTP/1.1
Content-Type: application/json; charset=utf-8

{
    "name": "hanmeimei",
    "isVip": true
}

接口返回

返回的响应体类型推荐为 Content-Type: application/json; charset=utf-8, 返回的数据包含在 HTTP 响应体中, 是一个 JSON Object. 该 Object 可能包含 3 个字段 data, status, statusInfo

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "Code": 100000,
    "msg": {
        "message": "操作成功",
        }
    "Data": {}
}
字段名 字段说明
code 状态码
必须是 >= 0 的 JSON Number 整数.0 表示请求处理成功, 此时可以省略 Code 字段, 省略时和为 0 时表示同一含义.非 0 表示发生错误时的错误码错误码格式可以参考微博API的 Error code"), 此时可以省略 data 字段, 并视情况输出 Msg 字段作为补充信息
msg 状态信息
必须是任意 JSON 数据类型.
推荐始终返回一个 object 包含 messagedetail 字段message 字段作为接口处理失败时, 给予用户的友好的提示信息, 即所有给用户的提示信息都统一由后端来处理.detail 字段用来放置接口处理失败时的详细错误信息. 只是为了方便排查错误, 前端无需使用.
data 业务数据
必须是任意 JSON 数据类型(number/string/boolean/object/array).
推荐始终返回一个 object (即再包一层)以便于扩展字段.
例如: 用户数据应该返回 {"user":{"name":"test"}}, 而不是直接为 {"name":"test"}

例如

这样我们就可以非常容易地通过判断 status 来处理数据了

if (!response.Code) {
    // status 为 0 或者没有 status 字段时表示接口成功返回了数据
    console.log(response.data);
} else {
    // 失败
    console.error(response.code, response.msg);
    // 统一由服务端返回给用户的提示信息
    alert(response.msg.message);
}
上一篇 下一篇

猜你喜欢

热点阅读