技术交流的时候遇到了这样的一个问题,被问及开发中用到的是不是Restful API,我说的是,我们现在用到的不属于完全是Restful API。因为我了解到的Restful API,是 通过具体的URI定位符,找到对应的资源,然后以固定的格式返回数据,这样的才是Restful API。然而在我模糊的表达中,对方听出来的是,我现在开发的API依然属于Restful API。那么什么才是真正的Restful API呢,今天我想好好总结一下。(之前学习东西总是,用到了就去搜索,然后很少总结,类似这种不影响我开发的概念性东西,只是大致搜索后,有了了解,不求甚解的。现在看来还是有必要弄的更清楚的,因为在讨论的时候,容易出现偏差,描述不清楚,对于学习其他知识的时候也是不利的。)
此处说明一下,我看到的是如何使用Retrofit请求非Restful API,这个让我理解了什么不是RESTful API,结果是不对的。不过不要紧,这篇博客的重点不是这个。
什么是REST?
可以总结为一句话:REST是所有Web应用都应该遵守的架构设计指导原则。
Representational State Transfer,翻译是”表现层状态转化”。
面向资源是REST最明显的特征,对于同一个资源的一组不同的操作。资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。REST要求,必须通过统一的接口来对资源执行各种操作。对于每个资源只能执行一组有限的操作。(7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS)
什么是RESTful API?
符合REST架构设计的API。
总结
符合REST设计标准的API,即RESTful API。REST架构设计,遵循的各项标准和准则,就是HTTP协议的表现,换句话说,HTTP协议就是属于REST架构的设计模式。比如,无状态,请求-响应。。。
参考:
理解本身的REST架构风格
http://www.infoq.com/cn/articles/understanding-restful-style/
理解RESTful架构
http://www.ruanyifeng.com/blog/2011/09/restful.html
Restful API设计指南
http://www.ruanyifeng.com/blog/2014/05/restful_api.html