【题记】一直以来都觉得能够无条件分享知识,回答别人问题的人很值得敬佩。就像我现在学习android看的mars老师的视频,真的很棒。让我感到很是敬佩。也想能凭着自己的能力干点什么时候,作为回报。可是作为一个小菜鸟,我实在不敢献丑。最近再研究Rest/Restlet,看着官网上的tutorial,想着把英文给翻译成中文,一方面可以加深自己的印象,一方面可以稍稍做出一点贡献。即便很卑微。
【正题】
Reference: http://www.restlet.org/documentation/2.0/tutorial
1. Restlet overview
Restlet framework由两个部分构成。一是Restlet API,API遵守REST的原则,使得处理客户端和服务器端的应用程序更加的便利。API是内置在Restlet Engine上层,并且被封装在org.restlet.jar包中。
API和implementation的关系就像是Servlet API 和 Web Containers(例如Jetty or Tomcat), 或者JDBC
2. Retrieving the content of a Web page
Restlet同时可是一个client,也可是一个server。例如,Restlet可以通过它的HTTP client connector处理远程的resource。一个connector在REST里面是一个软件的一部分,它可以使得components之间交流。通常是执行一个网络协议。Restlet根据先存在的开源的工程,提供几种client connector的执行方法。这部分connectors列出了几种client和server 之间的connector,并且详细解释了怎样去配置。
下面的代码是获得一个资源的representation并且显示到JVM的console。
- // Outputting the content of a Web page
- new ClientResource("http://www.restlet.org").get().write(System.out);
以上的代码只是简单的用了ClientResource类去实现。如果你想要多线程或者其他控制功能,你可以用Client connector类或者Request objects。以下的代码是展示如何设置一些preferences在你的client端,例如设置一个URI。根据你想要的response,它还可以是languages and media type. <没怎么明白,不知道为什么要设置preference,难道是根据你设置的refer property去返回资源的格式?>
- // Create the client resource
- ClientResource resource = new ClientResource("http://www.restlet.org");
- // Customize the referrer property
- resource.setReferrerRef("http://www.mysite.org");
- // Write the response entity on the console
- resource.get().write(System.out);
3. Listening to Web browsers
我们用内部的Restlet HTTP Server Connector(当然也可以是其他的)返回一个简单的"Hello, world”的txt格式的representation。注意Part03类继承了Restlet提供的ServerResource。
- public class Part03 extends ServerResource {
- public static void main(String[] args) throws Exception {
- // Create the HTTP server and listen on port 8182
- new Server(Protocol.HTTP, 8182, Part03.class).start();
-
} - @Get
- public String toString() {
- return "hello, world";
-
} - }
run代码之后,启动服务器,打开http://localhost:8182。事实上任何一个URI都可以成功,或者试试http://localhost:8182/test/tutorial。注意,如果你测试你的代码通过一个不同的机器,你要将localhost改为你服务器的IP地址或者网址。
以上是非常抽象的通过ClientResource and ServerResource类使用Restlet API。
如果有描述不恰当之处,敬请谅解。悉心听取宝贵意见。
【未完待续】