REST的每个教程或解释都过于复杂 - 在对CRUD的初步解释和SOAP的简单假设之后,学习曲线上升得如此之快.为什么人们不能再写出体面的教程了!
我正在看Restlet - 它不是最好的,教程中缺少一些东西,语言/语法有点令人困惑和不清楚.花了我几个小时来解开他们的第一步教程(在另一个Java程序员的帮助下!)
RESTlet教程评论
总的来说,我不确定该教程究竟是针对谁 - 因为全面存在相当程度的假设知识,所以进入REST和Restlet框架冷却让你有很多'追赶工作'要做,并且一遍又一遍地阅读段落.
我们很难确定罐子必须被复制到正确的lib文件夹中.
web.xml创建HTTP状态500错误的问题 -
服务器遇到内部错误(),导致无法完成此请求
,教程说:
"像往常一样创建一个新的Servlet Web应用程序,添加一个"com.firstStepsServlet"包并将资源和应用程序类放入其中."
这意味着您的类FirstStepsApplication的完全限定名称是com.firstStepsServlet.FirstStepsApplication,因此我们必须更改web.xml以引用正确的类,例如:
原版的:
firstStepsServlet.FirstStepsApplication
应该:
com.firstStepsServlet.FirstStepsApplication
结论
我的印象是,REST的概念应该比SOAP简单得多 - 但是如果不是更复杂的话,它似乎也很糟糕 - 根本不能得到它!GRRRR
任何好的链接 - 非常感谢.
您能否准确描述一下我们的Restlet教程中是什么导致您的麻烦?我们有兴趣修复/改进需要的东西.
你看过截屏了吗? http://www.restlet.org/documentation/1.1/screencast/
否则,我们在第12章中写的O'Reilly书中有一个Restlet教程.
如果您仍有麻烦,请联系我们的邮件列表:http: //www.restlet.org/community/lists
此致,JérômeLouvel
的Restlet〜创始人和首席开发者〜http://www.restlet.org Noelios技术〜共同创始人〜http://www.noelios.com
听起来你可以充分理解REST的基础知识,为此我强烈推荐Leonard Richardson和Sam Ruby的RESTful Web服务.我提供了一个很好的REST介绍:它是什么以及如何实现(实用)RESTful Web服务.
本书中的大多数示例代码实际上都是Ruby,但即使您不是Ruby专家也很容易理解.但有一件事应该对你有所帮助,本书后面的章节之一包含了几个RESTful框架的概述,包括Restlet.它并没有真正进入任何代码(它是一个50,000英尺的天桥),但我认为它会在这个阶段为您提供所需的代码.
Restlet框架由四个主要部分组成.
1. Restlet API
首先,有一个"Restlet API",一个支持REST概念的中性API,便于处理客户端和服务器端应用程序的调用.这个API由Restlet Engine支持,现在它们都在一个JAR(" org.restlet.jar ")中提供.
API和实现之间的这种分离类似于Servlet API和Web容器(如Jetty或Tomcat)之间或JDBC API和具体JDBC驱动程序之间的分离.
2.检索网页的内容
正如我们在介绍文章中提到的,Restlet框架同时是客户端和服务器框架.例如,Restlet可以使用其HTTP客户端连接器轻松使用远程资源.REST中的连接器是一种软件元素,通常通过实现网络协议的一端来实现组件之间的通信.Restlet基于现有的开源项目提供了几种客户端连接器实现.连接器部分列出了所有可用的客户端和服务器连接器,并说明了如何使用和配置它们.
在这里,我们将获得现有资源的表示,并将其输出到JVM控制台中:
// Outputting the content of a Web page new ClientResource("http://").get().write(System.out);
请注意,上面的示例使用简化的方法通过ClientResource类发出调用.如果您需要多线程或更多控制,仍然可以直接使用Client连接器类或Request对象.以下示例如何在客户端调用中设置一些首选项,如引用URI.它也可能是您希望作为响应接收的语言和媒体类型:
// 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.收听Web浏览器
现在,我们想看看Restlet框架如何监听客户端请求并回复它们.我们将使用内部的Restlet HTTP服务器连接器(即使可以切换到其他的,例如基于Mortbay的Jetty的连接器)并返回一个简单的字符串表示"hello,world"作为纯文本.请注意,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"; } }
如果您运行此代码并启动服务器,则可以打开Web浏览器并点击.实际上,任何URI都可以工作,也可以尝试.请注意,如果从其他计算机测试服务器,则需要将服务器的IP地址或域名替换为"localhost"(如果已定义).
到目前为止,我们主要通过ClientResource和ServerResource类向您展示了Restlet API中最高级别的抽象.但是随着我们前进,您将发现这两个类由富API支持,允许您操作所有REST工件.
4. REST架构概述
让我们退一步,从REST的角度考虑典型的Web架构.在下图中,端口表示连接器,该连接器支持组件之间的通信,这些组件由较大的框表示.