读书笔记之REST
来源:互联网 发布:乱码翻译软件 编辑:程序博客网 时间:2024/06/16 19:34
REST
表征状态转移(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。
REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移(Representational State Transfer)。
需要注意的是,REST是设计风格而不是标准。
·资源是由URI来指定。
·对资源的操作包括获取、修改、创建和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
·通过操作资源的表现形式来操作资源。
·资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。
REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。
所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。
REST除了给我们带来了一个崭新的架构以外,还有一个重要的贡献是在开发系统过程中的一种新的思维方式:通过url来设计系统的结构。根据REST,每个url都代表一个resource,而整个系统就是由这些resource组成的。因此,如果url是设计良好的,那么系统的结构就也应该是设计良好的。虽然我们连一个功能都没有实现,但是我们可以先设计出我们认为合理的url,这些url甚至不能连接到任何page或action,但是它们直观地告诉我们:系统对用户的访问接口就应该是这样。根据这些url,我们可以很方便地设计系统的结构。从REST的概念上来看,所有可以被抽象为资源的东西都可以使用RESTful的url。因此对于上面的两个问题,如果login和search可以被抽象为资源,那么就可以使用RESTful的url。search比较简单,因为它会返回搜索结果,因此可以被抽象为资源,并且只实现index方法就可以了(只需要显示搜索结果,没有create、destory之类的东西)。然而这里面也有一个问题:search的关键字如何传给server?index方法显然应该使用HTTP GET,这会把关键字加到url后面,当然不符合REST的风格。要解决这个问题,可以把每次search看作一个资源,因此要创建create和index方法,create用来在用户点击“搜索”按钮时通过HTTP POST把关键字传给server,然后index则用来显示搜索结果。这样一来,我们还可以记录用户的搜索历史。使用同样的方法,我们也可以对login应用REST,即每次login动作是一个资源。
- 读书笔记之REST
- REST 之我见
- Rest风格之常见问题
- activiti5之rest起点
- springmvc之REST风格
- SharePoint之rest api
- spring REST 之Hello World
- REST service 之登录注册
- spring integration之http rest
- REST与SOAP之比较
- WebService之SOAP与REST
- spring-guide之rest-service
- spring-guide之consuming-rest
- SoapUI5.2.1之REST参数
- SOAPUI之REST功能测试
- javascript 之Rest 参数(...)
- Spring REST实践之HATEOAS
- SpringBoot之Spring Data REST
- 北大POJ 2080 Calender
- UIAlertView的基本用法
- 网络层学习之二(IPv4及IPv6地址及相关协议)
- 谁获得了最高奖学金
- POJ2955:Brackets(区间DP)
- 读书笔记之REST
- android学习笔记 按电源键屏幕唤醒和屏幕睡眠流程(从上层到kernel)
- Strust2第(四)篇《struts2中action执行流程和源码分析》
- mysql更新表名
- HLS协议实现
- 有了QQ为什么微信还会火?
- hud1805 题目 Expression (数组创建二叉树+树的层次遍历
- 【马晓光】Endnote和文献管理技巧分享
- Strust2第(五)篇《action基础知识和数据校验》