`
wkf41068
  • 浏览: 453638 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Restful认识(2)

 
阅读更多
3.	REST架构原则
Roy  Fielding 明确指出 REST 和 World Wide Web 的五个架构原则: 
可寻址性(Addressability)。REST 中的所有东西都基于资源的概念。资源与 OOP 中的对象或其他名词不同,它是一种抽象,必须可以通过 URI 寻址或访问。 
接口一致性(Interface uniformity)。与 SOAP 或其他标准不同,REST 要求用来操纵资源的方法或动词不是任意的。这意味着 RESTful 服务的开发人员只能使用 HTTP 支持的方法,比如 GET、PUT、POST、DELETE 等。因此不需要使用 WSDL 等服务描述语言。 
无状态(Statelessness)。为了增强可伸缩性,服务器端不存储客户机的状态信息。这使服务器不与特定的客户机相绑定,负载平衡变得简单多了。这还让服务器更容易监视、更可靠。 
无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。HTTP协议是无状态协议。 
客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session。HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了。
具象(Representational)。客户机总是与资源的某种具象交互,绝不会直接与资源本身交互。同一资源还可以有多个具象。理论上说,持有资源的具象的任何客户机应该有操纵底层资源的足够信息。 
连通性(Connectedness)。任何基于 REST 的系统都应该预见到客户机需要访问相关的资源,应该在返回的资源具象中包含这些资源。例如,可以以超链接的形式包含特定 RESTful 服务的操作序列中的相关步骤,让客户机可以根据需要访问它们。 
4.	REST要求
•	客户端和服务器结构
•	连接协议具有无状态性
•	能够利用Cache机制增进性能
•	层次化的系统
•	随需代码 - Javascript (可选)
不像基于SOAP的Web服务,RESTful Web服务并没有的“正式”标准。 这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但在实现RESTful Web服务时可以使用其他各种标准(比如HTTP,URL,XML,PNG等)


5.	REST优势
•	可以利用缓存Cache来提高响应速度
•	通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
•	浏览器即可作为客户端,简化软件需求
•	相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
•	不需要额外的资源发现机制
•	在软件技术演进中的长期的兼容性更好
6.	RESTful实现
RESTful通过RESTful Web 服务与 RPC 样式的 Web 服务实现。
7.	URI
URI:Universal Resource Identifier,通用资源标识符; 
URL:Uniform Resource Locator,统一资源定位符; 
URN:Uniform Resource Name,统一资源名称。 
其中,URL,URN是URI的子集。 Web上地址的基本形式是URI,它代表统一资源标识符。有两种形式: 
URL:目前URI的最普遍形式就是无处不在的URL或统一资源定位器。 
URN:URL的一种更新形式,统一资源名称(URN, Uniform Resource Name)不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。
URL是Uniform Resource Location的缩写,译为“统一资源定位符”。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。  
  URL的格式由下列三部分组成: 
  第一部分是协议(或称为服务方式); 
  第二部分是存有该资源的主机IP地址(有时也包括端口号); 
  第三部分是主机资源的具体地址。,如目录和文件名等。 
  第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。 
  文件的URL: 
  用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不能省略。 
  例一:file://ftp.baidu.com/pub/files/foobar.txt 
  代表存放主机ftp.baidu.com上的pub/files/目录下的一个文件,文件名是foobar.txt。 
  网络新闻的URL: 
  利用URL表示网络新闻组时,如果是usenet的话只要指定出新闻组的名字即可。 
  例如:news:rec.gardening 
  表示usenet上的rec.gardening新闻组(园艺)。 
  HTTP的 URL: 
  使用超级文本传输协议HTTP,提供超级文本信息服务的资源。 
  例一:http://www.peopledaily.com.cn/channel/welcome.htm 
  其计算机域名为www.peopledaily. com. cn。超级文本文件(文件类型为.html)是在目录/channel下的welcome.htm。这是中国人民日报的一台计算机。 
  例二:http://www.rol.cn.net /talk/talk1.htm 
  其其计算机域名为www.rol. cn. net。超级文本文件(文件类型为.html)是在目录/talk下的talk1.htm。这是瑞得聊天室的地址,可由此进入瑞得聊天室的第1室。

分享到:
评论

相关推荐

    RESTful WebService

    下面写一个最简单的Hello World例子,以便对RESTful WebService有个感性认识。因为非常专业理论化的描述RESTful WebService是一件理解起来很痛苦的事情。看看例子就知道个大概了,再看理论就容易理解多了。

    RESTful Web Services Cookbook 中文免费版

    现在说起REST(表述性状态转移),相信大家一定都不会觉得陌生,因为人们对它的认识早已经过了WHAT和WHY的阶段。但在真正要将这种架构风格落地下来的时候往往又会让人有些不知所措,原因就在于我们对HOW关注的太少了...

    PHP编写RESTful接口

    首先我们来认识下RESTful Restful是一种设计风格而不是标准,比如一个接口原本是这样的: http://www.test.com/user/view/id/1 表示获取id为1的用户信息,如果使用Restful风格,可以变成这样: ...

    JavaWeb服务:构建与运行

    《Java Web 服务:构建与运行(影印版)》提供了对Java的API的一个全面介绍,...· 认识SOAP消息的结构 · 学习如何交付基于Java的RESTful Web服务和消耗商业RESTful服务 · 了解对基于SOAP和基于REST的Web服务的安全要求

    om2m-java-client-api:对于Java开发人员来说,在享受其所有功能和服务的同时,开发基于“ Open M2M”服务器的解决方案是除业务问题之外的另一个问题。 正是基于这种认识,诞生了需要通过对象与服务器“ Open M2M”进行通信的API的需求。

    OM2M遵循具有开放接口的RESTful方法,以独立于基础网络来开发服务和应用程序。 它提出了一种在OSGi层之上运行的模块化体系结构,使其可以通过插件高度扩展。 它支持多种协议绑定,例如HTTP和CoAP。 提供了各种互通...

    JAVA.WEB服务.构建与运行

     · 认识SOAP消息的结构  · 学习如何交付基于Java的RESTful Web服务和消耗商业RESTful服务  · 了解对基于SOAP和基于REST的Web服务的安全要求  · 学习如何在各种环境下部署JAX-WS服务  不管是学生还是有经验...

    百度地图开发java源码-restify_django_tutorial:restify_django_tutorial

    Transfer的缩写(不要试图去翻译它,你会发现三个字都认识,但合在一起就不知道它说啥了)。 要理解REST,首先在明确这几点: REST不是平台,不是软件,而是一套规范、一套倡议。就如同HTTP是一套规范,Google ...

    我所理解的RESTfulWebAPI[Web标准篇]

    由于REST仅仅是一种价格风格,所以它是与具体的技术平台无关的,也就是说采用REST架构的应用未必一定建立在Web之上,所以在正式介绍REST之前,我们先来简单认识一下Web。如果要问大家这样一个问题:“在过去半个世纪...

    REST基础及实例开发

    涵盖REST设计原则,资源识别方法,在Jersey下开发RESTful webservice实现转账业务,包括服务端,客户端源码,详细阐述HTTP的4个请求方法(GET,POST,PUT,DELETE)在REST中的应用,使你快速地认识及掌握REST

    SpringBoot项目结合疫情情况的婚恋系统.zip

    系统基于SpringBoot框架开发,采用MVC架构,前端可能使用Vue.js、React等现代JavaScript框架,通过RESTful API与后端交互,实现数据的即时更新和高效处理。系统还可能集成了OAuth2.0等认证协议,确保用户数据的安全...

    SpringBoot项目社区疫情防控平台.zip

    前端使用现代JavaScript框架如AngularJS、React或Vue.js来构建一个动态和响应式的用户界面,后端由SpringBoot搭建,整合了Spring MVC、Spring Data等子项目来简化数据库操作和RESTful API的开发。 主要功能包括: ...

    SpringBoot项目校友社交系统.zip

    2. 个人资料管理:用户可以编辑自己的个人资料,包括教育背景、工作经历、兴趣爱好等信息。 3. 校友动态:用户可以发布动态,分享自己的生活点滴、工作成就或者感兴趣的话题。 4. 私信通讯:系统提供私信功能,使...

    识别:Google Summer of Code'19 | CCExtractor开发| 可怜的人的认识

    可怜的人的认识 CCExtractor开发下的Google Summer Of Code项目 该项目旨在提供Amazon Rekognition服务的免费替代方案。建立要在本地为开发环境设置项目,请查看此Wiki用法该项目目前支持特征卷曲人脸识别curl -i -X...

    Django Rest framework之认证的实现代码

    对RESTful API设计有一定了解 对django框架有一定认识,本身drf就是基于django做的 对python面向对象编程有了解(drf会对一些原生的django类做封装) 一、前言 在学习drf之前的时候,先简单说一下需要的预备知识...

    Kubernetes初探:总体概述及使用示例

    Kubernetes是Google开源的容器集群管理系统。它构建于docker技术之上,为容器化的应用...Kubernetes以RESTFul形式开放接口,用户可操作的REST对象有三个:1.pod:是Kubernetes最基本的部署调度单元,可以包含contain

    使用Istio治理微服务入门

    本文来自博客园,本文介绍微服务的“痛点”,以及我们将带领大家感性的认识一下Istio,希望对您的学习有所帮助。近两年微服务架构流行,主流互联网厂商内部都已经微服务化,初创企业虽然技术积淀不行,但也通过各种...

    TeslaJS:用于NodeJS的非官方Tesla API库

    封装Tesla RESTful API的非官方NodeJS库。 注意:如果您打算购买特斯拉,则可以使用此推荐获得1,000英里的免费增压。 该库当前支持所有现有的Tesla车辆。 首先,重要的是要认识到,已经有几个非常好的Java库可用于...

    基于WCF构建企业级大型分布式SOA架构(初级篇)

     2、让学员对SOA架构设计的思想和方式具有初步的认识, 对后期我们将要学习的SOA架构有一个宏观的了解;  3、让学员通过完整的示例的学习, 能够熟练搭建开发环境, 服务构建,服务配置,服务调试、服务单元测试, ...

    超大数据集上的亚秒级查询工具Kylin教程

    定义数据集上的一个星形或雪花形模型在定义的数据表上构建cube使用标准SQL通过ODBC、JDBC或RESTFUL API进行查询,仅需亚秒级响应时间即可获得查询结果 Kylin提供与多种数据可视化工具的整合能力,如Tableau,PowerBI...

Global site tag (gtag.js) - Google Analytics