理解RESTful架构
文章目录
关于这个话题,读过最好的中文资料是阮一峰老师博客上的这篇文章
以下做些摘录,方便自己查看,想理解RESTful架构架构,建议翻阅上头的文章。
#解决什么问题
- 网站即软件
- 这种"互联网软件"具有高延时(high latency)、高并发等特点。
- RESTful架构,就是目前最流行的一种互联网软件架构
#顾名思义
- REST,即
Representational State Transfer
的缩写。阮一峰老师对这个词组的翻译是表现层状态转化
。如果一个架构符合REST原则,就称它为RESTful架构。 - 要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组到底是什么意思,它的每一个词代表了什么涵义。
#逐词分析 ##资源(Resources)
- REST的名称"表现层状态转化"中,省略了主语。“表现层"其实指的是"资源”(Resources)的"表现层"。
- 所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。
- “资源"是具体的实在。你可以用一个URI(统一资源定位符)指向它
- 注:uri是定位关键,在后端视角来看(django-restful-framework),框架要把资源(数据)映射到uri(url)上
- 注2:资源可能是分布式的,使用超链接来连接它们
##表现层(Representation)
- “资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层”(Representation)。
- 而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。
##状态转化(State Transfer)
- 访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。
- 互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
- HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
#综述
- 每一个URI代表一种资源;
- 客户端和服务器之间,传递这种资源的某种表现层;
- 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
#误区
- 最常见的一种设计错误,就是URI包含动词. “资源"表示一种实体,所以应该是名词,URI不应该有动词,动词应该放在HTTP协议中。
文章作者 种瓜
上次更新 2014-08-28