Restlet官方文档翻译.docx
- 文档编号:14956880
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:10
- 大小:201.73KB
Restlet官方文档翻译.docx
《Restlet官方文档翻译.docx》由会员分享,可在线阅读,更多相关《Restlet官方文档翻译.docx(10页珍藏版)》请在冰点文库上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Restlet 官方 文档 翻译