REST ( REpresentational State Transfer ),State Transfer 为 "状态传输" 或 "状态转移 ",Representational 中文有人翻译为"表征"、"具象",合起来就是 "表征状态传输" 或 "具象状态传输" 或 "表述性状态转移"。数据库
在 REST 中的资源 (Resource) 表明整个网络上的资源。安全
HTTP Method 与 CURD 数据处理操做对应网络 |
||
HTTP方法spa |
数据处理翻译 |
说明blog |
POSTci |
Create资源 |
新增一个没有id的资源io |
GETtable |
Read |
取得一个资源 |
PUT |
Update |
更新一个资源。或新增一个含 id 资源(若是 id 不存在) |
DELETE |
Delete |
删除一个资源 |
RESTFUL WEB SERVICE
RESTful Web Service (又称 RESTful Web API) 是一个使用 HTTP 并符合 REST 原则的 Web 服务。咱们知道,经过 URL 能够传送 GET 请求,在 表单指定 method="GET|POST" 来送出请求。但咱们要处理 PUT 或 DELETE 的请求呢?经过 RESTful 咱们能够简单 URI 来定义资源并和 HTTP 方法配合使用。
Resource 与 HTTP 方法的对应 |
|||||
资源 |
资源说明 |
GET |
PUT |
POST |
DELETE |
http://www.cnblogs.com/Products/ |
Products是一组资源集合 |
列出 该组资源集合中每一个资源的详细信息 |
更新 当前整组资源 |
新增 或附加一个新资源。该操做传回新资源的URL |
删除 整组资源 |
http://www.cnblogs.com/Products/1 |
Products/1是单个资源 |
取得 指定的资源的详细信息 |
更新 或新增指定的资源 |
新增 或附加一个新元素 |
删除 指定的元素 |
在 RESTful 每一个资源有本身独立的 URI, Client 从资源集合或单个资源开始进入,无论是资源集合或单个资源,咱们都能与 HTTP 方法配合使用,例如,GET 下载,PUT 更新,POST 新增,DELETE 删除。
GET操做是安全的。所谓安全是指无论进行多少次操做,资源的状态都不会改变。好比我用GET浏览文章,无论浏览多少次,那篇文章还在那,没有变化。固然,你可能说每浏览一次文章,文章的浏览数就加一,这不也改变了资源的状态么?这并不矛盾,由于这个改变不是GET操做引发的,而是用户本身设定的服务端逻辑形成的。
PUT,DELETE操做是幂等的。所谓幂等是指无论进行多少次操做,结果都同样。好比我用PUT修改一篇文章,而后在作一样的操做,每次操做后的结果并无不一样,DELETE也是同样。顺便说一句,由于GET操做是安全的,因此它天然也是幂等的。
POST操做既不是安全的,也不是幂等的,好比常见的POST重复加载问题:当咱们屡次发出一样的POST请求后,其结果是建立出了若干的资源。
安全和幂等的意义在于:当操做没有达到预期的目标时,咱们能够不停的重试,而不会对资源产生反作用。从这个意义上说,POST操做每每是有害的,但不少时候咱们仍是不得不使用它。
还有一点须要注意的就是,建立操做可使用POST,也可使用PUT,区别在于POST 是做用在一个集合资源之上的(/uri),而PUT操做是做用在一个具体资源之上的(/uri/xxx),再通俗点说,若是URL能够在客户端肯定,那么就使用PUT,若是是在服务端肯定,那么就使用POST,好比说不少资源使用数据库自增主键做为标识信息,而建立的资源的标识信息究竟是什么只能由服务端提供,这个时候就必须使用POST。