程序员

RESTful API定义及使用规范

2018-01-19  本文已影响143人  fxm5547

首发于fxm5547的博客

RESTful本身是一种风格而不是规范,本文为该风格的规范实现的最佳实践,本文档详细说明了HTTP RESTful API的定义和使用规范,作为接口调用者和实现者的重要参考。

接口风格

遵循RESTful设计风格,同时控制复杂度及易于使用,仅遵循大部分原则。
遵循原则:

未遵循原则:

参考:

模块和版本说明

接口模块相互对立且有版本管理,模块名作为APP配置项进行存储,每个模块的版本号version和endpoint在应用初始化时调用api模块信息接口(通过传递客户端应用名称和版本号获取各个API模块的endpoint和version)获取并存储

模块 模块用途 最新版本号
account 帐户 v1
sms 短信 v1
open 一些开放接口,不需要公共参数 v1

公共参数

Headers

公共请求参数是指每个接口都可能需要传递的参数,公共参数通过header传递。

参数 是否必须 说明及header格式
app 所有接口必须 请求客户端应用标识,取值*-ios、*-android、*-pc、*-h5
header格式:
X-Co-App: $app
user_id App登录后所有接口都传
Web通过session机制获取
用户标识
header格式:
Authorization: CoAPI base64(user_id:token)
token App登录后所有接口都传
Web通过session机制获取
授权访问令牌
header格式:
Authorization: CoAPI base64(user_id:token)
app取值 客户端名称【域名】
admin-pc 管理中心PC网页版【admin.url.com】
admin-h5 管理中心手机网页版【admin.url.com】
admin-ios 管理中心iOS版
admin-android 管理中心Android版

Cookies

JWT & OAuth2

权限

状态码说明

正确
接口正常访问情况下,服务器返回2××的HTTP状态码。

HTTP状态码
200 OK - 表示已在响应中发出、资源更改成功(GET、PUT)
201 Created - 新资源被创建(POST)
204 No Content - 资源被删除(DELETE)

错误
当用户访问接口出错时,服务器会返回给一个合适的4××或者5××的HTTP状态码;以及一个application/json格式的消息体,消息体中包含错误码code和错误说明message。

code message HTTP状态码
InvalidToken 未登录或授权过期,请登录 401 Unauthorized
ValidationError 输入字段验证出错,缺少字段或字段格式有误 422 Unprocessable Entity
AccountNotExist 账户名不存在 404 Not Found
InvalidPassword 密码错误 401 Unauthorized
NotFound 请求的资源不存在 404 Not Found
AccountHasExist 账户名已经存在 409 Conflict
MobileHasBinded 手机号已经绑定其他账户 409 Conflict
InvalidSign 参数签名验证未通过 403 Forbidden
InvalidSMSCode 短信验证码错误 403 Forbidden
ExpiredSMSCode 过期的短信验证码 403 Forbidden
FrequencyLimit 发送过于频繁,请稍后再试 403 Forbidden
TimesExceeded 达到最大发送次数限制,请明天再试 403 Forbidden
VerifyTimesExceeded 达到最大校验次数,请明天再试 403 Forbidden
RateLimitExceeded 接口调用次数超过限制,请稍后再试 429 Too Many Requests
InternalError 服务异常,请稍后再试 500 Internal Server Error

参数传递

遵循RESTful规范,使用了GET, POST, PUT, DELETE共4种请求方法。

  1. GET:请求资源,返回资源对象
  2. POST:新建资源,返回新生成的资源对象
  3. PUT:新建/更新资源,返回完整的资源对象
  4. DELETE:删除资源,返回body为空

4种请求动作中,GET、PUT、DELETE是幂等的;只有POST是非幂等的。幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 是非幂等是判断接口使用POST还是PUT的决定条件

注意: APP端获取json数据时,对于数值类型字段必须以数值类型转换,无论传递过来的值是否带引号。

图片
图片

速率限制Rate Limiting

安全注意事项

测试工具

推荐Chrome浏览器插件Postman作为接口测试工具,
Postman下载地址

图片

文档生成工具

调用示例

API模块信息获取

接口文档参考示例

接口文档参考示例

上一篇 下一篇

猜你喜欢

热点阅读