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

从RESTlet开始学习构建REST式架构的Java应用

阅读更多

目录

 

1REST式架构

2Roy的博士论文提纲

3对REST的理解(转载)

4从RESTlet开始,使用Java构建REST式架构的应用

 

 

正文

 

 

 

1 REST式架构

 

 这个词汇目前已经流行到疯了。。。但凡商业项目都想跟REST粘点边吧! 首先了解一下那篇传说中的博士学位论文:

 

地址: http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm 您可以随时取拜读或者下载PDF!

 

UNIVERSITY OF CALIFORNIA, IRVINE

Architectural Styles and
the Design of Network-based Software Architectures

DISSERTATION

submitted in partial satisfaction of the requirements for the degree of

DOCTOR OF PHILOSOPHY

in Information and Computer Science

by

Roy Thomas Fielding

2000

 

Dissertation Committee:
Professor Richard N. Taylor, Chair
Professor Mark S. Ackerman
Professor David S. Rosenblum

 

 

2 基本章节:

CHAPTER 1: Software Architecture

        1.1 Run-time Abstraction
        1.2 Elements
        1.3 Configurations
        1.4 Properties
        1.5 Styles
        1.6 Patterns and Pattern Languages
        1.7 Views
        1.8 Related Work
        1.9 Summary

    CHAPTER 2: Network-based Application Architectures

        2.1 Scope
        2.2 Evaluating the Design of Application Architectures
        2.3 Architectural Properties of Key Interest
        2.4 Summary

    CHAPTER 3: Network-based Architectural Styles

        3.1 Classification Methodology
        3.2 Data-flow Styles
        3.3 Replication Styles
        3.4 Hierarchical Styles
        3.5 Mobile Code Styles
        3.6 Peer-to-Peer Styles
        3.7 Limitations
        3.8 Related Work
        3.9 Summary

    CHAPTER 4: Designing the Web Architecture: Problems and Insights

        4.1 WWW Application Domain Requirements
        4.2 Problem
        4.3 Approach
        4.4 Summary

    CHAPTER 5: Representational State Transfer (REST)

        5.1 Deriving REST
        5.2 REST Architectural Elements
        5.3 REST Architectural Views
        5.4 Related Work
        5.5 Summary

    CHAPTER 6: Experience and Evaluation

        6.1 Standardizing the Web
        6.2 REST Applied to URI
        6.3 REST Applied to HTTP
        6.4 Technology Transfer
        6.5 Architectural Lessons
        6.6 Summary

 


3 转载下文以帮助新手理解:

 

在RIA的曙光已经从地平线下面露出来的时候,Web的全面service化已经不是个遥不可及的事情。记得2000-2001年,以微软为首的一些大公 司鼓吹Web Services,当时有人认为2003年各大网站就会急急忙忙地向Web Services迁徙。但历史证明,公众互联网站根本不认同这个方向,预见中的Web Services大跃进没有出现。Web Services使得网站的服务既可以通过页面来发布,也可以通过可编程的Web Services API形式发布,这本身是很好的事情,为什么人们不接受呢?原因固然是多方面的,但是互联网社群不接受为企业应用量身定做的、笨重累赘的 SOAP/WSDL/UDDI,是不可忽略的因素。这个时候,一种新的Web Services模型就开始引起人们的注意。2000年,著名的Web技术专家、HTTP等诸多Web协议的主要起草人Roy Fielding从加州大学Irvine分校获得博士学位,其博士学位论文 中 描述了一种分布式软件的体系结构风格,被称为REST。这种风格完全符合已经建立起来的Web体系结构,并且具有天然的简单性、可延展性。自此之 后,REST成为SOAP之外另一种主流的Web Services实现模型。很快,人们发现,开发者更加偏爱REST模型.eBay、Amazon等巨型网站早在2004年就发现,大约有60%的Web Service客户通过REST来使用它们所提供的网络服务,此后这个比例一直在增加。那么,REST到底是什么东西呢?

    简而言之,REST代表“具备表像的状态迁移(REpresentational State Transfer)。注意,我把representation翻译为表像,是为了更好地表达其本意,如果按字面翻译,应为“表现”。REST这样理解 Web:Web是资源的集合,每一个资源都有一个或多个URI无疑义地引用。REST软件构件可以获得某项资源的一个“表像”,从这个表像中,REST构 件可以了解到该资源的当前状态,从而在该项资源上实施恰当的操作,并且可以把这个表像传递给其他的REST构件。当REST构件在该资源上实施了某些操作 之后,将导致该资源的状态发生迁移,从而获得新状态的表像。这种解释当然是比较晦涩的了。但换一种说法大家就会非常清楚。当我们在浏览Web页面的时候, 这个Web页面就是Web应用当前状态的表像,而我们和我们的浏览器一起构成了一个REST构件。当你在Web页面上执行某项操作(点击链接、提交表单, 等等),你就是“在某个资源上实施了一个操作”,就会导致系统的状态发生迁移,迁移到另一个状态中,而新的状态以新的表像(页面)展示给你。这不正是我们 每天都重复几百上千次的事情吗?所以我们用REST已经十多年了。只不过,Roy Fielding在其论文中表明,REST其实是一种分布式软件的通用风格,可以被用来构建相当广泛的互联网应用。

    Roy Fielding对REST的深刻理解直接影响到HTTP协议的制定。在1999年完成的HTTP 1.1(RFC2616)中,HTTP增加了PUT、DELETE两个命令,从而使HTTP的主要命令扩充为四个(GET、POST、PUT、 DELETE,未将次要命令如OPTION、HEAD等计入)。Roy Fielding认为,这四个命令不多不少恰恰能完成REST风格的应用。换言之,只要有这四个动词,就可以在REST范围内做出任何想要的分布式应用。 这是多么令人惊讶的结论!我们在平时的面向对象设计中,通常要给每一个对象定义的动作(方法)都不少于四个,而REST却断言,四个就够了,多一个浪费, 少一个不行。如果Fielding博士是对的,那么互联网上的编程工作就可以大大简化,HTTP体系下天生的轻便、灵活、简单、可扩展的特性都唾手可得。

    然而,遗憾的是,尽管HTTP很流行,四个动词的语义清清楚楚地写在RFC2616里面,但真正很好地理解了其中含义的人却非常少。世界上充满了不求甚解 就撸起袖子蛮干的聪明人,所以浏览器出现已经十多年了,却还是只支持GET和POST两个方法,这使得REST的推行不能一帆风顺。

    Ajax的出现标志着RIA时代逐渐走来,客户端将不再是清一色的HTML页面,也可以是一个Ajax的程序,通过XMLHttp向服务器发起PUT和 DELETE请求。这样,就要求服务器端在四动词的背景下重新思考应用的构造。传统上,服务器端应用只是通过REST风格将部分服务暴露出来。而 Rails 1.2则直接将REST直接作为构建整个Web应用的中心,这才是Rails 1.2的独特之处,也是张显Rails社群离经叛道和卓尔不群的地方。为了要采纳REST风格,Rails 1.2革新了Web应用的构造思想,整个领域建模的思想都有所变化。现在整个Rails社群都应当准备向REST时代迁移。

 

 

 

 

4 RESTlet :  Lightweight REST framework

 

地址: http://www.restlet.org/

 

Restlet is a lightweight REST framework for Java that lets you embrace the architecture of the Web and benefit from its simplicity and scalability. By leveraging our innovative REST engine, you can start blending your Web Sites and Web Services into uniform Web Applications!

 

  Restlet has a light core but thanks to its pluggable extension, it is also a comprehensive REST framework for Java. It supports all REST concepts (Resource, Representation, Connector, Component, etc.) and is suitable for both client and server Web applications.

 

  It supports major Web standards like HTTP, SMTP, XML, JSON, WADL, and Atom. Many extensions are also available to integrate with Servlet, Spring, Jetty, Grizzly, Simple, JAXB, JAX-RS, JiBX, Velocity, or FreeMarker.

 

A GWT version is also available and is a direct port of the main Java version.

 

 

PS:开始学习RESTlet的基本过程

1 下载RESTlet (比如restlet-1.1.4.exe) ;

2 安装:windows上封装为一个程序了,其实安装后主要适用其中的Lib文件夹下的jar包;

3 新建web项目,从RESTlet导入需要的jar包到新建项目的lib中;

4 编写helloworld程序,并运行测试!!!(可以在servlet容器中运行,也可以作为单独的java程序运行,其实是内建的小服务器)

 

代码可以参考RESTlet网站上的指南firstSteps:  http://www.restlet.org/documentation/1.1/firstSteps

 

 

 

 

 

这里有一些人的观点,仅供参考:


下面是一些牛人对Web Service的理解,个人觉得很准确:
1. WWW中的Web所承载的是人所理解的数据,Web Service中Web用来承载机器程序所理解的数据。
2. Web Service发展中最大的障碍不是协议(Protocol),WWW已经证明HTTP是非常成熟的应用层协议,定义庞杂的SOAP协议与相关WS-×规范,确实是浪费时间。最大的障碍是数据的Schema-每个应用领域的数据Schema。
3. 使用现有WWW的架构来构建Web Service,核心概念包括URI、Resource、Representation、State、HTTP。

 

分享到:
评论
2 楼 bluky999 2009-04-17  
JavaEye上也有不少的RESTlet资源,比如RESTlet网站上的 firstSteps被翻译成了中文:

RestLet-第一步(翻译) http://www.iteye.com/topic/182843
1 楼 bluky999 2009-04-17  


Cool URIs don't change

[url]
http://www.w3.org/Provider/Style/URI[/url]

相关推荐

    Restlet-Client-REST-API-Testing_v2.8.0.1

    chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1非常实用的谷歌插件

    restlet-client-rest-api-t.crx

    restlet-client 谷歌插件 接口调试 最新

    chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.zip

    chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.crx

    Restlet Client - REST API Testing

    Restlet Client - REST API Testing,用来发送请求,可用于测试后端代码,简单易用

    Restlet Client - REST API Testing(DHC)

    Restlet Client - REST API Testing(DHC)详情:https://blog.csdn.net/dream_weave

    restlet-jse-2.1.1.zip

    Restlet项目为“建立REST概念与Java类之间的映射”提供了一个轻量级而全面的框架。它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务;而且,事实证明它自从2005年诞生之时起,就是一个可靠的软件。 ...

    Web Api调试工具 Chrome插件Restlet-Client-REST-API-Testing

    Web Api调试工具 Chrome插件Restlet-Client-REST-API-Testing

    chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.rar

    restlet_client插件,不需要按照postman就可以实现restful api 调试。 支持浏览器:360浏览器、360极速浏览器、谷歌浏览器等使用谷歌内核的浏览器。

    Restlet Client - REST API Testing 2.8.0.1插件

    安装步骤:1、打开在谷歌浏览器--》右上角的三个点--》更多工具--》扩展程序,将已下载的restlet client插件拖拽至此即可 2、谷歌浏览器右上角的有一个“R”的图标,点击即可打开restlet client工具使用

    Restlet Client - REST API Testing.crx

    Chrome插件 Visually create and run single HTTP requests as well as complex scenarios. Automate your API tests with our CI/CD plugin.

    restlet-framework-java:领先的Java REST API框架

    得益于Restlet Framework强大的路由和过滤功能,统一的客户端和服务器Java API,开发人员可以构建安全且可扩展的RESTful Web API。 它适用于所有主要平台(Java SE / EE,Google App Engine,OSGi,GWT,Android)...

    RESTLET框架学习书籍

    RESTLET框架学习书籍

    restlet2.1学习笔记项目代码

    restlet2.1学习笔记项目代码

    restlet1.1文档

    restlet是一个支持rest架构的JAVA编写的开源轻量级框架,比较简单易学,不错的框架。

    restlet restful

    restlet restful,web工程,可直接运行。启动后,main方法作为client运行调用服务端。服务器数据之间沟通利器,绝对不坑。

    最新版本Restlet Client - REST API Testing

    适用最新版的chrome,DHC是一款可以帮助用户使用chrome插件模拟HTTP客户端发送测试数据到服务器的谷歌浏览器插件,在chrome中安装了DHC插件以后,就可在服务器端代码初步完成的时候,使用DHC进行数据测试,以便更早地...

    rest风格webservice框架

    Restlet项目为“建立REST概念与Java类之间的映射”提供了一个轻量级而全面的框架。它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务。 Restlet项目受到Servlet API、JSP(Java Server Pages)、...

    restlet-jee-2.1.1.zip

    Restlet项目为“建立REST概念与Java类之间的映射”提供了一个轻量级而全面的框架。它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务;而且,事实证明它自从2005年诞生之时起,就是一个可靠的软件。 ...

    JAVA.WEB服务.构建与运行

    《Java Web服务:构建与运行》通过提供混合架构概述、完整的工作代码示例以及短而精确的编译、部署和执行应用程序的指示,采用明确实用的方法来处理这些技术。你将学习如何从头开始编写Web服务以及集成现有服务到你...

Global site tag (gtag.js) - Google Analytics