概述
接口形式主要为 RESTful,但又不拘泥于 RESTful。
一个完整的 API 请求过程包括:
- HTTP请求方式
- URL Endpoint
- 请求数据
- 响应结果
下面分述之。
HTTP请求方式
| HTTP Operation | Similar to SQL Stmt | Description | 
|---|---|---|
| GET | SELECT | 获取,查找 | 
| POST | CREATE | 新增创建 | 
| PUT | UPDATE | 在服务器更新资源(客户端提供改变后的完整资源) | 
| PATCH | UPDATE | 在服务器部分更新资源(客户端提供改变的属性) | 
| DELETE | UPDATE | 删除 | 
URL Endpoint
URI指向的是唯一的资源对象/资源集合列表。
统一所有的 endpoint 使用复数使得 URL 更加规整,让API使用者更加容易理解,对开发者来说也更容易实现。
URL Endpoint 组成
一个完整的 URL Endpoint 依次是:
- 网络协议(HTTP, HTTPS)
- 服务器地址
- 版本
- 接口名称
- 参数(可选)- GET 参数使用Query String 格式:如:查询时,过滤条件使用 Query String,如 ?offset=0&limit=10&sort=_created_at;参数列表应该被 encode 过
- 用来描述数据或者请求的元数据放Header中,例如 X-Result-Fields
 
- GET 参数使用Query String 格式:如:查询时,过滤条件使用 Query String,如 
示例:
GET https://api.example.com/v1/users/123456/profiles
说明:
- API 与用户的通信协议,总是使用 HTTPS 协议。
- 尽量将API部署在专用域名之下:api.example.com
- 不使用大写字母;使用中线 -代替下划线_
- 版本控制的另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观
- 一些常见的参数。- ?limit=10:指定返回记录的数量
- ?offset=10:指定返回记录的开始位置。
- ?page=2&per_page=100:指定第几页,以及每页的记录数。
- ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
- ?user_type_id=1:指定筛选条件
 
接口分类
分为对资源对象的CURD操作,服务型接口和系统设置三种。
资源对象的CURD操作
GET https://~/$version/trades            获取trades列表  
GET https://~/$version/trades/:id        根据id获取单个trade  
POST https://~/$version/trades           创建trade  
PUT https://~/$version/trades/:id        根据id更新trade  
PATCH https://~/$version/trades/:id      根据id部分更新trade  
DELETE https://~/$version/trades/:id     根据id删除trade  
服务型接口
使用 services 标识:
https://~/services/$version/server-name  
示例:
GET https://~/services/$version/search?q=filter?category=file  搜索
PUT https://~/services/$version/queued/jobs                    往任务队列里面添加一个新的任务  
DELETE https://~/services/$version/queued/jobs/:id             根据id删除任务
系统设置
使用 settings 标识:
https://~/settings/$version/server-name  
如:更改界面语言环境
PUT https://~/settings/$version/gui/lang  
{  
    "lang": "zh-CN"  
}
