#设计RESTful API

> REST从资源的角度来观察整个网络，分布在各处的资源由URI确定，而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征，客户端应用不断地在转变着其状态，所谓表征状态转移。

因为我们需要的是一个Machine到Machine沟通的平台，需要设计一个API。而设计一个API来说，RESTful是很不错的一种选择，也是主流的选择。而设计一个RESTful服务，的首要步骤便是设计资源模型。

###资源

互联网上的一切信息都可以看作是一种资源。

HTTP Method | Operation Performed 
------------|---------------------
GET         | Get a resource (Read a resource)
POST        | Create a resource
PUT         | Update a resource
DELETE      | Delete Resource

##设计RESTful API

设计RESTful API是一个有意思的话题。下面是一些常用的RESTful设计原则:

##REST关键目标

- 组件间交互的可伸缩性
- 接口的通用性
- 组件的独立部署
- 通过中间组件来减少延迟、实施安全策略和封装已有系统

##判断是否是 RESTful的约束条件

 - 客户端-服务器分离
 - 无状态
 - 可缓存
 - 多层系统
 - 统一接口
 - 随需代码（可选）
 
##JSON

![xml-vs-json](./images/xml-vs-json.png)
