image.png
image.png
zzz
image.png
image.png
0. REST 不是 "rest" 这个单词, 而是几个单词缩写
1. REST 描述的是在网络中 client 和 server 的一种交互形式; REST 本身不实用, 实用的是如何设计 RESTful API(REST 风格的网络接口);
2. Server 提供的 RESTful API 中, URL 中只使用名词来指定资源, 原则上不使用动词资源是 REST 架构或者说整个网络处理的核心比如:
http://api.qc.com/v1/newsfeed: 获取某人的新鲜;
http://api.qc.com/v1/friends: 获取某人的好友列表;
http://api.qc.com/v1/profile: 获取某人的详细信息; 3. 用 HTTP 协议里的动词来实现资源的添加, 修改, 删除等操作即通过 HTTP 动词来实现资源的状态扭转:
GET 用来获取资源,
POST 用来新建资源(也可以用于更新资源),
PUT 用来更新资源,
DELETE 用来删除资源比如:
DELETE http://api.qc.com/v1/friends: 删除某人的好友 (在 http parameter 指定好友 id)
POST http://api.qc.com/v1/friends: 添加好友
UPDATE http://api.qc.com/v1/profile: 更新个人资料
禁止使用: GET http://api.qc.com/v1/deleteFriend 图例:
4. Server 和 Client 之间传递某资源的一个表现形式, 比如用 JSON,XML 传输文本, 或者用 JPG,webP 传输图片等当然还可以压缩 HTTP 传输时的数据(on-wire data compression)
5. 用 HTTP Status Code 传递 Server 的状态信息比如最常用的 200 表示成功, 500 表示 Server 内部错误等
主要信息就这么点最后是要解放思想, Web 端不再用之前典型的 PHP 或 JSP 架构, 而是改为前段渲染和附带处理简单的商务逻辑(比如 AngularJS 或者 BackBone 的一些样例)Web 端和 Server 只使用上述定义的 API 来传递数据和改变数据状态格式一般是 JSONiOS 和 Android 同理可得由此可见, Web,iOS,Android 和第三方开发者变为平等的角色通过一套 API 来共同消费 Server 提供的服务
REST 名称
REST -- REpresentational State Transfer
全称 Resource Representational State Transfer: 资源在网络中以某种表现形式进行状态转移
Resource: 资源, 即数据 (前面说过网络的核心) 比如 newsfeed,friends
Representational: 某种表现形式, 比如用 JSON,XML,JPEG
State Transfer: 状态变化通过 HTTP 动词实现
- best practices:
- 1. URL root:
- https://example.org/api/v1/
- https://api.example.com/v1/
- 2. API versioning:
- BAD
- /getProducts
- /listOrders
- /retrieveClientByOrder?orderId=1
- GOOD
- GET /products : will return the list of all products
- POST /products : will add a product to the collection
- GET /products/4 : will retrieve product #4
- PATCH/PUT /products/4 : will update product #4
来源: http://www.jianshu.com/p/4e27c9a59540