Skip to content
Trotyl Yu edited this page May 18, 2015 · 11 revisions

一种API接口的设计风格和理念。

请先把 GitHub API 的主要部分过一遍,会对API设计有很大帮助。

##核心理念

一切内容皆为 资源(Resource),通过URI(注意,这里是URI,不是URL)定位资源,通过CRUD方法操作资源。

##主要优势

  • 主防止出现过多的URL路径,增强可读性和可维护性。
  • 充分利用现有的HTTP协议项,减少传输内容。
  • 充分利用HTTP GET的Cache机制,减少传输次数。

##举个例子

比如有一个物流管理系统(你懂的我在黑哪个东西~):

首先设计URL(URL是一种特殊的URI),因为要同时兼顾网页和API,故API统一用API开头。 定为 /api/:version/:path_to_resource

路由设计如下:(/api/v1省略)

METHOD PATH PARAM FUNCTION
GET /orders[?since=:id] 获取订单列表(从某个订单开始)
GET /orders/:id 获取特定订单信息
PUT /orders/:id 订单需更改字段(如订单状态) 更新特定订单的特定字段(部分更新)
DELETE /order/:id 删除特定订单

##高级内容

  • 对于需要选择性的部分,可以利用Headers中的If-Match字段来进行条件查找。
  • 对于需要分页的部分,可以利用Headers中的Link字段返回下页的URL。
Clone this wiki locally