【API设计风格—RESTful】:什么是RESTful(一)

来源:互联网 发布:杭州淘宝培训机构 编辑:程序博客网 时间:2024/04/28 19:30

直观认识

对url进行规范,写RESTful格式的url

非REST的url:http://…../queryItems.action?id=001&type=T01
REST风格的url:http://…./id/001/type/T01
特点:url简洁,将参数通过url传到服务端

http的方法规范

不管是删除、添加、更新。。使用url是一致的,如果进行删除,需要设置http的方法为DELETE,同理添加POST。。。
后台controller的方法里需要判断http方法,如果是delete执行删除,如果是post执行添加(使用SpringMVC等类似框架可以省去我们自己判断的过程)

对http的contentType规范

请求时指定contentType,要json数据,设置成json格式的type。。

个人理解

源于网站即软件的思想

越来越多的人开始意识到,网站即软件,而且是一种新型的软件。
这种”互联网软件”采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。
网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合。(备注:因为这是研究者在2000年发表的论文,所以这里说的软件开发的概念都比较古老了,我们现在的软件应该都属于他说的互联网软件)

问题来了——如何更好的通信

现在我们必须考虑,如何开发在互联网环境中使用的软件。
如何得到一个功能强、性能好、适宜通信的架构

解决方案——统一的风格

网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备……)。
因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API架构的流行——RESTful是其中之一。

定义

REST:Representational State Transfer
REST: 指的是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。
RESTful:满足这些约束条件和原则的应用程序或设计就是 RESTful。
应用范围:它主要用于客户端和服务器交互类的软件。
优点:基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制(?还没有什么体会,暂且写到这里)。
综述
(1)每一个URI代表一种资源;(可以把资源理解为网络中的信息)
(2)客户端和服务器之间,传递这种资源的某种表现层;(表现形式,如资源的格式JSON、XML)
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。(HTTP协议,是一个无状态协议。通过GET,POST,DELETE等使服务端的资源发生改变,如:修改,删除)
  每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。

参考资料

参考了以下的文章。
http://www.ruanyifeng.com/blog/2011/09/restful.html
http://www.ruanyifeng.com/blog/2014/05/restful_api.html

1 0