-
REST的使用场景是Machine-to-machine的系统集成,目标是让服务发布者和消费者在最小约束下自由演化。
这个约束是指服务契约,简单讲就是服务输入输出的语义。消费者只需知道服务的根资源的URI,就可以由根资源引导到所需的资源。换句话说,消费者和发布者的耦合只在于根资源的URI以及各资源及其操作的语义。
- 透明性,暴露资源存在。
- 充分利用 HTTP 协议本身语义。
- 无状态,这点非常重要。在调用一个接口(访问、操作资源)的时候,可以不用考虑上下文,不用考虑当前状态,极大的降低了复杂度
- HTTP 本身提供了丰富的内容协商手段,无论是缓存,还是资源修改的乐观并发控制,都可以以业务无关的中间件来实现
1. 轻量,直接基于http,不在需要任何别的诸如消息协议。get/post/put/delete为CRUD操作
2. 面向资源,一目了然,具有自解释性。
3. 数据描述简单,一般以xml,json做数据交换
一个文件操作接口,传统模式:
api/getfile.php - 获取文件信息,下载文件
api/uploadfile.php - 上传创建文件
api/deletefile.php - 删除文件
RESTful:
api/file 只需要这一个接口
GET 方式请求 api/file - 获取文件信息,下载文件POST 方式请求 api/file - 上传创建文件
DELETE 方式请求 api/file - 删除某个文件