Restlet官方文档翻译.docx

上传人:b****4 文档编号:27283515 上传时间:2023-06-28 格式:DOCX 页数:10 大小:201.73KB
下载 相关 举报
Restlet官方文档翻译.docx_第1页
第1页 / 共10页
Restlet官方文档翻译.docx_第2页
第2页 / 共10页
Restlet官方文档翻译.docx_第3页
第3页 / 共10页
Restlet官方文档翻译.docx_第4页
第4页 / 共10页
Restlet官方文档翻译.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Restlet官方文档翻译.docx

《Restlet官方文档翻译.docx》由会员分享,可在线阅读,更多相关《Restlet官方文档翻译.docx(10页珍藏版)》请在冰豆网上搜索。

Restlet官方文档翻译.docx

Restlet官方文档翻译

第1章javaRestlet

restlet是java框架中用于开发RESTful风格的web应用程序的框架。

在restlet中,我们可以方便的使用Router来管理URI。

一个HTTP请求包含一个URI来标识要访问的资源。

这个信息被存储在属性中,并作为我们路由请求的基础。

我们的第一个目标是找目标资源,它可以是一个ServerResource类及其对象或ServerResource类的子类及其对象。

如果使用类而不是对象,则在有请求到来并路由成功(匹配route成功)之后,会自动实例化该类。

在Router类中有一个attach()方法,它需要两个参数,一个是URI模版,一个是ServerResource。

attach()方法会创建相应的routes,以便在有请求到来时进行匹配。

在使用Router时,我们不必关心HTTP请求的Method,因为我们只需要在Resource类中使用注解(比如:

@put,@post等),Router就会自动根据HTTP请求中的Method,去调用有着相应注解的方法。

1.1Restlet概述

Restlet框架由两个重要部分组成:

RestletAPI和RestletEngine。

RestletAPI是支持REST的API,并能处理来自用户侧和服务器侧应用程序的调用。

RestletAPI的后端是RestletEngine,这两部分都在包中。

在API和实现之间的区别,类似ServletAPI和Webcontatiners(Jetty或Tomcat)或JDBCAPI和具体的JDBCdrivers之间的区别。

Restlet框架既是客户框架也是服务器框架。

比如,Restlet能使用HTTPclientconnector去操作远程资源。

在REST中的一个connector是来保证两个组件之间正常通信的软件元素,通常由网络协议实现。

Restlet提供几个基于已有开源项目的clientconnectors实现。

在connectors一章中,列出了所有可用的client和serverconnectors,并解释了如何去使用和配置。

rite;

现在,我们想要知道Restlet框架如何监听客户请求和相应。

我们将用InternalRestletHTTP服务器connector,并返回一个简单的字符串表示“hello,world”。

publicclassPart03extendsServerResource{

publicstaticvoidmain(String[]args)throwsException{

tart();

}

@Get

publicStringtoString(){

return"hello,world";

}

}

如果运行这个代码和启动你的服务器,你能打开一个Web浏览器,并登录,任何URI都能正常工作,尝试使用,如果你从另一台机器测试你的服务器,你需要替换“localhost”。

1.2REST架构概述

让我们从REST的角度来考虑典型的web架构。

这下图中,ports表示connector,links表示具体的协议(HTTP,SMTP等)。

1.3Components,virtualhosts和applications

除了支持标准REST软件架构之外,Restlet框架也提供一个可以极大简化在一个JVM内部驻留多个应用程序的类集。

目标是提供RESTful、portable和更灵活的选择来替代已有ServletAPI。

在下图中,我们能看到Restlets提供了三个类型来管理这些复杂情形。

Components能管理几个VirtualHosts和Applications。

VirutalHosts支持灵活的配置,比如,几个域名共享相同IP地址,或者相同域名被负载均衡到几个不同的IP地址。

最后,我们用Applications来管理相关Restlets、Resources和Representations的集合。

除此之外,Applications被确保能在不同的Restlet实现和不同的VirualHosts上portable和reconfigurable。

除此之外,他们也提供像访问日志、请求实体的自动编码、可配置状态页设置等等的重要服务。

为了说明这些类,我们使用一个简单的例子。

在这里我们创建一个Component,然后增加一个HTTP服务器Connector到它上面,并监听在端口8182。

然后我们创建一个简单的traceRestlet,并把它增加到Component的默认VirtualHost上。

默认host会抓住任何还没有路由到一个声明VirtualHost的请求(看属性)。

在之后的例子中,我们也引入Application类的用法。

注意现在还没有任何的访问日志显示在终端上。

publicclassPart05extendsServerResource{

publicstaticvoidmain(String[]args)throwsException{

dd,8182);

ttach("/trace",;

();

}

@Get

publicStringtoString(){

etBaseRef()+'\n'+"Remainingpart:

"

+getReference().getRemainingPart();

}

}

现在,我们通过在Web浏览器上输入

URI:

URI:

part:

part:

/abc/defparam=123

1.4Servingstaticfiles

你的Web应用程序会提供像Javadocs一样的静态页面吗如果有,不需要建立一个Apache服务器,使用Directory类即可。

publicstaticfinalStringROOT_URI="";

[...]

dd,8182);

().add;

ttach(application);

();

为了运行这个例子,你需要指明ROOT_URI的有效值,在这里,它是被设置成,如果想要自定义在文件扩展和元数据之间的映射,或如果想要指明一个index名,就需要使用Application的metadataservice属性。

1.5Accesslogging

能够适当地记录Web应用程序的活动是一个常见需求。

RestletComponents默认知道如何去生成类似Apache的日志,或者可以自定义。

通过充分利用建立在JDK上的日志系统,可以像配置任意标准JDK日志一样配置logger。

为了充分配置日志,需要通过设置系统属性声明一个配置文件:

("",

"/your/path/");

1.6配置文件格式请参见:

errorpages

另外一个常见需求是自定义状态页。

1.7引导对敏感资源的访问

如果需要确保对一些Restlets的访问的安全,有几个方法可用。

一个通用的方法是依靠cookies来识别客户(或客户会话),并检查违反应用程序声明的用户ID和会话ID来决定接入是否应该被授予。

Restlets通过Request或Response中的Cookie和CookieSetting对象来支持cookie。

也有另外一种基于标准HTTP认证机制的方法。

RestletEngine当前接收证书并放到BasicHTTPscheme中,证书也可以被送到AmazonWebServiceScheme。

当接收到一个调用,开发者能通过ChallengeAuthenticatorfilter来使用在中有效且分析过的证书。

Filters是一类具体的Restlets,它能在唤醒之前预处理一个调用,并附着在Restlet上,或者在附着的Restlet对调用返回之后处理调用。

如果你熟悉ServletAI,这个概念有点类似Filter接口。

看以下的例子,我们如何修改之前的例子来确保访问的安全:

ut("scott","tiger".toCharArray());

 

sSuccess()){

rite;

}elseif()

.equals){

rintln("Accessauthorizedbytheserver,checkyourcredentials");

}else{

Forinstance:

ut("scott","tiger".toCharArray());

("/docs/",guard);

et("user")+"\"";

(message,;

}

};

et("user")+"\"";

(message,;

}

};

et("order")

+"\"foruser\""

+().get("user")+"\"";

(message,;

}

};

 

et("user");

=null;}

@Get

publicStringtoString(){

return"Accountofuser\""++"\"";

}

}

1.8总结

本文中主要概念及其关系:

核心表示类的关系:

除了这个教程之外,你需要看看:

RestletAPI:

learn/javadocs/jse/api/

RestletExtension:

learn/javadocs/jse/ext/

Restletengine:

learn/javadocs/jse/engine/

所有可用客户和服务器connectors:

learn/guide/core/base/connectors/

提供可插拔特征(比如servletcontainers的整合,动态表示的生成等等)的所有可用extensions:

learn/guide/extensions/editions-matrix

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1