BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

文章:用Restlet创建面向资源的服务

| 作者 徐涵 关注 3 他的粉丝 发布于 2008年5月31日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

随着REST设计思想逐渐深入人心,许多有助于简化REST式服务编程的新框架正不断涌现出来,而已有框架也在学习REST的风格与特性,这进而促进了对REST的关注。

众所周知,REST并不是一种架构(architecture),而是一种评判架构的方式。面向资源的架构(Resource-Oriented Architechture)是一种架构:它对设计施加约束,使你能够容易地把问题划分为一个个REST式资源(RESTful resources)。不过这些资源(resources)仍然是在抽象层面上的。仅当你通过具体的Web服务将它们暴露出来时,它们才成为实实在在的资 源。

如果打算从零开始编写服务(比方说用CGI脚本),那么可以用你喜爱的任何方式把资源转换成代码。但大部分服务并不是从零开始,而是用Web框架编写的。懂得REST的Web框架会在编程时施加一些约束,从而使你能够容易地以特定编程语言实现REST式资源。

本文节选自博文视点出版公司即将推出的经典著作《RESTful Web Services中文版》中的第12章《REST式服务框架》,将向你讲述如何用Restlet(用于Java)来编写面向资源的服务。

《RESTful Web Services中文版》向读者介绍了什么是REST、什么是面向资源的架构(Resource-Oriented Architecture,ROA)、REST式设计的优点、REST式Web服务的真实案例分析、如何用各种流行的编程语言编写Web服务客户端、如何 用三种流行的框架(Ruby on Rails、Restlet和Django)实现REST式服务等。不仅讲解REST与面向资源的架构(ROA)的概念与原理,还向读者介绍如何编写符合 REST风格的Web 2.0应用。本书详实、易懂,实战性强,提供了大量RESTful Web服务开发的最佳实践和指导,适合广大的Web开发人员、Web架构师及对Web开发或Web架构感兴趣的广大技术人员与学生阅读。

与此同时,博文视点还授权InfoQ中文站独家为大家提供额外的样章进行试读:欢迎下载第3章《REST式服务有什么不同》

阅读全文:用Restlet创建面向资源的服务

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

REST by haoxiang zhang

不是架构方式 ???

Re: REST by Xu Han

REST是一种架构风格(architectural style),它是一组原则,而不是一种具体的架构。
ROA(面向资源的架构)是一种具体的、符合REST架构风格(即符合REST原则)的架构。

TR by yu jiang

模板变量的值被存放在请求的属性地图(attributes map)里(跟Rails例子中的params地图类似),



这个Map译成地图,读起来觉得挺别扭的.

Re: TR by Xu Han

这里是参照“网站地图”翻译的。欢迎分享更好的译法 :-)

Re: TR by Wang David

我想 map这里是对应、映射的含义。
是不是可以这样:

模板变量的值被存放在请求中与变量映射(相对应)的属性里

question by fan fan

"Restlet的思想是:HTTP客户端与HTTP服务器之间的差别,对架构来说无所谓。一个软件应可以既充当Web客户端又充当Web服务器,而无须采用两套完全不同的APIs。"
这句话怎么讲?这里举的例子中没有看到这样的场景

推荐大家看一下 JRest4Guice by cnoss cheng

项目地址:code.google.com/p/jrest4guice/


特点:

  • * 基于GUICE,内置带事务的JPA实现

  • * 零配置式服务声明

  • * 服务的自动扫描注册

  • * 非侵入式,用户不需要实现特定的接口来实现Restful服务

  • * 支持Post. Get. Put. Delete操作

  • * 灵活的注入(支持上下文环境request/response以及参数的自动注入)

  • * 与JAAS的无缝集成

  • * 支持分布式资源对象

Re: question by Wang David

在restlet中,client和server都作为Connector的子类存在于Component类中。

Connector是他们共同的父类。

在Component中同时存在client和server。

只要构造了restlet的Component,客户端和服务端就同时存在了。
他们是基于相同的运行环境,使用相同的资源。除了对外提供的方法不同外,没有较大的差别。

Re: question by here weare

示例12-3 我运行了下 怎么抛异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpConnectionManager
????

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

9 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT