`

REST概述(转)

 
阅读更多

1.REST究竟是什么?是一种新的技术、一种新的架构、还是一种新的规范?

REST即表述性状态转移,英文全称Representational State Transfer,是Roy Fielding博士在2000年他的博士论文中提出的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

REST是一种架构风格,它既不是新技术,也不是新的规范。REST利用了HTTP协议提供的几个方法来实现了网络资源的增删改查。

 

2.REST与传统的Web Service究竟有没有本质的区别?如果Web Service已经足够好了,为什么还会有REST?作为世界上最成功的分布式应用架构风格,它是为运行在互联网环境的分布式超媒体系统量身定制的,它究竟有哪些优势?

传统的Web Service指的是SOAP Web服务,两者的区别极大。

SOAP即Simple Object Access Protocol,它是一个协议规范,基于XML格式,而REST只是一种架构风格,采用XML或JSON等交换格式都可以。

REST简单、清晰,而SOAP则比较复杂,而且SOAP协议有很多标准的扩展协议规范,比如WS-Security、WS-Routing、WS-Referral等等。

REST很好理解,且极易上手;不过由于它缺乏标准,因此只被看作是一种架构方法。而SOAP是一个工业标准,它具备良好定义的协议,以及一套良好确立的规则,在大型和小型系统中均有采用。

企业级应用通常会考虑SOAP,而互联网应用则通常考虑用REST。

 

3.从架构风格的抽象高度来看,常见的分布式应用架构风格有三种:1.分布式对象(Distributed Objects,简称DO)、2.远程过程调用(Remote Procedure Call,简称RPC)、3.表述性状态转移(Representational State Transfer,简称REST);这三种风格有哪些实例?请举例说明。

分布式对象(Distributed Objects,简称DO)是早期做分布式系统采取的技术,它的实例有:微软的COM/DCOM技术,CORBA技术等。

远程过程调用(Remote Procedure Call,简称RPC),也是早期做分布式系统采取的技术,它是基于C/S模型调用的机制,客户机向服务器端发送调用请求等待服务器应答,是一种典型的请求应答机制,大致过程可以理解为本地分布式对象向本机发请求,不用自己编写底层通信本机会通过网络向服务器发送请求,服务器对象接受参数后,经过处理再把处理后的结果发送回客户端。它的实例有Sun公司的Java RMI(Remote Method Invocation)技术、EJB技术等。

表述性状态转移(Representational State Transfer,简称REST),利用HTTP协议,是目前最适合的技术。

 

4.在互联网中REST占据了统治地位,但在企业内网中却面临着DO和RPC的挑战,为什么?分布式对象DO与REST有哪些差别?RPC与REST有哪些不同?

1)这很正常,REST架构风格在互联网应用中得到广泛验证,但对于企业内网而言,技术还比较新。

2)现有的企业应用要改造成REST,代价太大。

3)DO和RPC太成熟了,旧的习惯主导一切。

分布式对象DO与REST的区别在于分布式对象采用专有协议,REST采用HTTP协议;分布式对象不是跨平台的,REST是跨平台的。

RPC与REST的区别:RPC以动作为中心,而REST以资源为中心;RPC是C/S架构,而REST既可以是B/S架构,也可以是C/S架构。

 

5.在Java 世界中,与大Web Service 相对应的规范是JAX-WS。新的规范是Java RESTful Web Service 简称JAX-RS,JAX-RS能否取代JAX-WS?

JAX-RS不太可能取代JAX-WS,至少短时间内不可能。原因很多,主要阐述两点,一是JAX-WS有自己适用的场景;二是技术是为业务服务的,用JAX-WS能搞定的事,不一定就一定要使用JAX-RS。

 

6.您是否使用过使用Java开发REST式的Web服务经历?请分享下个人经验。

我经常用Java开发REST服务。这几年很多项目都用到了REST服务,尤其是移动互联网应用,通过REST服务暴露接口,供Android终端、iOS终端调用。

用Java开发REST服务,我用的最多的是Jersey,Apache CXF框架也用过,但它显得笨重,用Jersey更加轻量级、高效。

JBoss提供的RESTeasy框架也不错,跟Jersey差不多。

至于REST测试,可以用浏览器,或者编写使用curl命令的脚本,或者用soapui工具等,还可以用Chrome浏览器的REST Client插件等等。

分享到:
评论

相关推荐

    Rest架构概述

    1.何为REST 2.REST优势 3.REST规范接口 4.REST应用

    rest api 概述

    rest api 概述 文档类型

    django-rest-framework-jwt, Django REST框架的JSON网络令牌认证支持.zip

    django-rest-framework-jwt, Django REST框架的JSON网络令牌认证支持 REST框架JWT认证 Django REST框架的代价为的JSON ...概述这个包提供了对 Django REST框架框架的 JSON网络令牌认证支持。如果你想了解有关JWT的更多

    aREST_UI, 面向aREST框架的嵌入式用户界面.zip

    aREST_UI, 面向aREST框架的嵌入式用户界面 aREST_UI 版本 1.1.1概述aREST UI是aREST框架的嵌入式 UI 。 目前与 Arduino Mega合作,由于使用WiFi芯片,WiFi屏蔽和以太网屏蔽功能。 它与Arduino屏蔽和WiFi屏蔽以及Ard

    loopback-connector-rest, 将环回连接到 REST API.zip

    loopback-connector-rest, 将环回连接到 REST API loopback-connector-rest概述连接器使应用程序能够使用模板驱动的方法与其他( 第三方) REST api交互。 它支持两种不同风格的API调用:资源操作失败使用模板模板定义...

    django-rest-framework-files:对Django REST框架的文件下载和上传支持

    概述REST框架文件允许您下载用于呈现响应的格式的文件,并且还可以通过上传包含模型字段的文件来创建模型实例。要求Python(2.7、3.5、3.6) Django REST框架(3.4、3.5、3.6、3.7、3.8)安装使用pip安装: pip ...

    Boomerang - SOAP & REST Client-7.7.6.zip

    概述:无缝集成和测试 SOAP 和 REST 服务。 描述: 无缝集成和测试SOAP和REST服务。 您是否正在寻找可以帮助您访问和使用REST和SOAPWeb服务的出色应用程序? 您想通过一个新的、有用的SOAP客户端将您的体验提升到一...

    pi-aREST:Raspberry Pi的aREST框架

    如果您想进一步了解aREST,请转到 。 内容 index.js:打包文件。 示例:使用pi-aREST包的几个示例 支持的硬件 该库目前与所有Raspberry Pi板兼容,包括Raspberry Pi 3和Raspberry Pi Zero。 要求 要将库与...

    openfire-restAPI-plugin:允许通过RESTful API进行Openfire管理

    以及创建,更新或删除聊天室获取所有或特定用户会话的概述向所有在线用户发送广播消息获取所有或特定安全审核日志的概述从多用户聊天室获取聊天消息历史记录可用的REST API客户端REST API客户端是以特定的编程语言...

    spec:概述了 rest api 的 JSON 规范

    这个想法是创建一个愚蠢的简单 Web 应用程序来快速设计和记录 REST API。 用例: 设计新的 API 文档脚手架和代码生成器语用休息的目标: 完全开源模块化一切,实现灵活性一个简单的规范去做用更好的链接替换 ​​$...

    loopback-connector-rest:将环回连接到 REST API

    概述 LoopBack REST 连接器使应用程序能够使用模板驱动的方法与其他(第三方)REST API 进行交互。 它支持两种不同风格的 API 调用: 安装 在您的应用程序根目录中,输入: $ npm install loopback-connector-rest ...

    Fabric区块链Rest API实现

    1、系统结构概述 相关推荐:H…Fabric Java 开发教程 | H…Fabric Nodejs开发教程 整个系统包含两个物理节点: Fabric节点:运行Fabric示例中的First Network,并且实例化了Fabcar链码 API服务器节点:运行REST API...

    rest-bundle:用于为REST和JsonApi Json标准的Pimcore对象创建REST Apis的软件包

    Pimcore休息包请注意,此捆绑包当前为0.8版,...功能概述将数据对象转换为JsonAPI或Rest-Json格式。 仅通过使用简单特征和路由即可构建rest API。 可配置的计算属性,以从前端隐藏业务逻辑。 可扩展的Normalizer / Deno

    dynamic-rest:Django REST框架的动态扩展

    概述 动态REST(或DREST)使用API​​功能扩展了流行的(或DRF),这些功能使简单的RESTful API具有图查询语言的灵活性。 DREST类可以用作DRF类的直接替代,DRF类在标准DRF套件的基础上提供以下功能: 关联关系 ...

    aREST:Arduino的RESTful环境

    休息 概述 一个简单的库,为Arduino和ESP8266 WiFi芯片实现了REST API。 它设计为通用的,目前支持通过HTTP(使用CC3000 WiFi芯片,Arduino WiFi库或以太网屏蔽),通过... 如果您想进一步了解aREST,请转到 。 内容

    mybatis框架里用rest输出json数据实例

    本程序使用了mybatis及Spring框架,用rest的设计思想,实现了对数据库的增删该查,传输和返回的数据格式均为json格式。主要概述了,REST如何对JSON进行操作,REST如何发布成为webservice。

    java采购系统软件源码-burp-rest-api:BurpSuite安全工具的REST/JSONAPI

    概述 安全工具的 REST/JSON API。 自 2016 年首次提交以来, burp-rest-api一直是 BurpSuite 支持的 Web 扫描自动化的默认工具。 许多安全专家和组织都依赖这个扩展来协调 Burp Spider 和 Scanner 的工作。 入门(或...

    REST-API-best-practices:概述 REST API 的约束以及设计和创建 API 的最佳实践。 它还着眼于对 API 的 RESTful 程度进行分级的方法

    Representational State Transfer (REST) 是 Roy Fielding 于 2000 年在他的博士论文中定义的一种架构风格。 REST 描述了一种不特定于 Web API 的 Web 架构。 然而,它已成为最流行的 Web API 风格,在 2008 年超过...

    jxrest:简单、轻量级的 Java REST 框架

    概述jxrest 是一个简单、轻量级的框架,可实现基于 JSON 的 REST API 的真正快速开发。 让我们看看编写 REST API 有多么简单: import ...

    mondrian-rest:适用于Mondrian的REST API

    概述 该存储库包含一个基于的REST API,用于通过查询关系数据源。 目录 动机 Mondrian库是一种将MDX查询提交到关系数据源的绝妙方法。 出色的界面平台,像斋宫和Pivot4J提供全功能的即席查询,为最终用户的舒适与...

Global site tag (gtag.js) - Google Analytics