如何理解RESTful

首先应该注意到ful后缀,就说明这是一个用来形容某件事或物的。

REST:Representational State Transfer,这个组合真没法翻译,网上的几种译法:表现层状态转移、表征状态转移、表述性状态传递……。这nima都什么意思?谁能看懂???

挨个查了每个单词的意思,用中文不管怎么拼凑都无法理解,翻译就先搁一边。

这个概念到底在说什么呢?

先说它是什么。

 

举个栗子,不要考虑合理性

假设一

有一本触屏电子书,用户可以对电子书进行CURD(create创建 update修改 read读 delete删)

电子书厂商满足了用户这个需求,在电子书设置了 C U R D 四个按钮

用户要增加文字,必须要点击C按钮,告诉电子书你要干什么才能于电子书互动

这里有个问题,不是所有厂商都用 C U R D四个字母来代表这四个操作,可能用其他符号来代替,这样用户在面对不同厂商的电子书时,有一定的学习成本

另外,这本电子书上真的需要这四个按钮吗?可以取消吗?

假设二

还是有触屏一本电子书,用户可以对电子书进行CURD

电子书厂商满足了用户这个需求,但是并没有设置C U R D按钮

那用户怎么跟电子书进行互动

在早些年前,有一个机构制定了一个标准,对任何电子书都有哪些操作,并且给出了操作的名字

比如 get 用来 读,post 用来 添加,put 用来 修改,delete用来 删除等等

于是有厂家按照这个标准设计了一款触屏电子书,用户要修改时,需要在触屏里输入put,之后就可以改了。

于用户只要读懂这个机构的标准,就能操作遵守这个标准生产的电子书,而且这本电子书不需要按钮。

 

理解例子 一 二后,REST这个概念是什么?其实它描述了一种操作方式。

REST描述的是应用层上,客户端对服务器端的一种请求方式。

http协议中,网络请求有很多方式,比如get post put delete heade,http协议并没有强制说get 只能读不能删 ,post只能修改不能读,http协议建议开发者实现的网络接口符合这些单词的字面意思,比如用get方法,只读取,用post方法只创建,用put方法只修改等等。

我们说客户端要对服务端进行请求,那是不是要有个地址。

对非REST风格的url

对于用什么http方法就没有严格限定了,假设都用post方法

post http://zlzxy.com/users/getUser
post http://zlzxy.com/users/creatUser
post http://zlzxy.com/users/updateUser
post http://zlzxy.com/users/deleteUser

 

REST风格的url

get http://zlzxy.com//users/{userId} 获取userId对应的user信息
post http://zlzxy.com//users 创建一个新的user
put http://zlzxy.com//users/{userId} 更改userId对应的user信息
delete http://zlzxy.com//users/{userId} 删除userId对应的user。

 

对于非REST风格的请求,对应的操作都在URL里体现

而REST风格的,对应的操作在请求方法里体现

 

至于这么做有什么好处,等下文……

 

 

 

 

Leave a Comment

*Required fields Please validate the required fields

*

*