任何简单的Java REST教程?

时间:2008-12-02 11:26:14

标签: java rest

REST的每个教程或解释都过于复杂 - 在对CRUD的初步解释和SOAP的简单假设之后,学习曲线上升得如此之快。为什么人们不能再写出体面的教程了!

我正在看Restlet - 它不是最好的,教程中缺少一些东西,语言/语法有点令人困惑和不清楚。我花了几个小时来解开他们的第一步教程(在另一个Java程序员的帮助下!)

RESTlet教程评论

总的来说,我不确定该教程究竟是针对谁 - 因为全面存在相当程度的假设知识,因此进入REST和Restlet框架会让你有很多'追赶工作',并一遍又一遍地重读段落。

  1. 我们很难确定罐子必须被复制到正确的lib文件夹中。

  2. 创建HTTP状态500错误的web.xml问题 -

  3.   

    服务器遇到内部问题   error()阻止了它   履行这一要求

    ,教程说:

      

    “创建一个新的Servlet Web应用程序   像往常一样,添加一个   “com.firstStepsServlet”包和   把资源和应用程序   课程。“

    这意味着您的类 FirstStepsApplication 的完全限定名称是 com.firstStepsServlet.FirstStepsApplication ,因此我们必须更改web.xml以引用正确的类,例如:

    原:

    <param-value>
             firstStepsServlet.FirstStepsApplication
    </param-value>
    

    应该是:

    <param-value>
             com.firstStepsServlet.FirstStepsApplication
    </param-value>
    

    结论

    我的印象是,REST的概念应该比SOAP简单得多 - 但是如果不是更复杂的话,它似乎也同样糟糕 - 根本没有得到它! GRRRR

    任何好的链接 - 非常感谢。

8 个答案:

答案 0 :(得分:14)

您能否准确描述一下我们的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 Technologies~联合创始人〜http://www.noelios.com

答案 1 :(得分:9)

听起来你可以充分了解REST的基本原理,为此我高度推荐Leonard Richardson和Sam Ruby的RESTful Web Services。我提供了一个很好的REST介绍:它是什么以及如何实现(实用的)RESTful Web服务。

本书中的大部分示例代码实际上都是Ruby,但即使您不是Ruby专家也很容易理解。但有一件事应该对你有所帮助,本书后面的章节之一包含了几个RESTful框架的概述,包括Restlet。它并没有真正进入任何代码(这是一个50,000英尺的天桥),但我认为它会在这个阶段为您提供所需的代码。

答案 2 :(得分:6)

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。聆听网络浏览器

现在,我们想看看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架构。在下图中,端口表示连接器,该连接器支持组件之间的通信,这些组件由较大的框表示。

答案 3 :(得分:4)

与Java无关,但我认为这些InfoQ文章非常好:

答案 4 :(得分:2)

你指向web.xml中的错误,但我刚刚检查了Restlet 1.0和1.1文档,我没有看到这种错误。 我想提一下,你可以在页面的末尾找到一个包含完整war文件的zip文件和源文件列表,以防你想在“独立”模式下运行。 你尝试过独立模式吗?如tuto中所述,类路径中只需要2个jar和源文件。

我们还想指出“firstSteps”教程不是关于REST的教程,而是关于使用Restlet的编程。您还可以查看“firstResource”教程(http://www.restlet.org/documentation/1.1/firstResource),该教程描述了如何开发一个简单的资源,并介绍了REST架构风格的一些概念。它应该对你有所帮助。

答案 5 :(得分:1)

此外,教程中建议的限定名称确实是“firstStepsServlet.FirstStepsApplication”而不是“com.firstStepsServlet.FirstStepsApplication”。

因此,web.xml中建议的参数值是正确的。

您能否确认这可以解决您的问题?另外,在阅读教程之前,您是否拥有Servlet部署知识?如果没有,这将解释痛苦。在这种情况下,独立模式可能更适合。

答案 6 :(得分:1)

这是一篇关于REST的精心编写的教程.. http://rest.elkstein.org/2008/02/what-is-rest.html

答案 7 :(得分:-2)

eSoftHead公司刚刚发布了short tutorial使用RESTeasy开发Restful应用程序。