2008-12-02 72 views
33

REST的每一個教程或解釋都過於複雜得太快 - 學習曲線在CRUD的初始解釋和假設的SOAP簡單之後增長得如此之快。爲什麼人們不能寫出體面的教程!Java簡單的REST教程?

我在看Restlet - 它不是最好的,在教程中有些東西缺失,語言/語法有點混亂和不清楚。它花了我小時解開他們的第一步教程

的Restlet教程評論

總的來說,我不知道究竟是誰在教程的目的是(與其他Java程序員的幫助!) - 因爲有是一個相當程度的假設知識,所以進入REST和Restlet框架的寒冷會讓你有很多'追趕工作'要做,並且重複地重讀段落。

  1. 我們很難弄清楚罐子必須被複制到正確的lib文件夾中。

  2. 與web.xml中創建一個HTTP狀態500錯誤問題 -

服務器遇到內部 誤差()阻止它 完成此請求

,教程說:

「像往常一樣創建一個新的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

任何好的鏈接 - 非常感謝。

+6

哦,我怎麼覺得你的痛苦!絕對是一個投票! – BobbyShaftoe 2008-12-02 11:28:28

+0

檢查出http://stackoverflow.com/questions/1710199/which-is-the-best-java-rest-api-restlet-or-jersey,並考慮這是否是一個確切的重複與否。 – ripper234 2010-11-27 18:28:04

+1

我很同意你的意見!人們會認爲像RESTlet這樣的API會「幫助」你。在三分之一的時間內,我可以編寫一個簡單的Web服務框架,以瞭解RESTlet體系結構。 – Spider 2011-12-20 16:56:32

回答

9

聽起來好像你可以充分理解REST的基本原理,並且我的高度由Leonard Richardson和Sam Ruby推薦RESTful Web Services。我爲REST提供了一個很好的介紹:它是什麼以及如何實現(實用的)RESTful Web服務。

本書中的大多數示例代碼實際上都是Ruby,但即使您不是Ruby專家,也很容易理解。但有一件事應該特別幫助你,本書後面的章節之一包含幾個RESTful框架的概述,包括Restlet。它沒有真正涉及任何代碼(這是一個50,000英尺的天橋),但我認爲它會給你在這個階段你所需要的。

+2

有趣的是,我剛剛在亞馬遜上訂購了RESTful Web服務,然後再閱讀您的文章。感謝您的寶貴意見。 – Vidar 2008-12-02 12:20:13

14

您能否準確描述在我們的Restlet教程中導致您的問題的原因?我們有興趣修復/改進需要的內容。

您是否檢查過屏幕錄像? http://www.restlet.org/documentation/1.1/screencast/

否則,有一個的Restlet教程在O'Reilly出版的,我們在他們的第一章寫12

如果您仍然有困難,請聯繫我們的郵件列表: http://www.restlet.org/community/lists

最佳問候, 傑羅姆Louvel

的Restlet〜創始人和首席開發者〜http://www.restlet.org Noelios技術〜共同創始人〜http://www.noelios.com

+1

請在我的問題中看到我的新編輯 - 歡呼聲。 – Vidar 2008-12-02 14:42:52

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體系結構樣式的一些概念。它應該幫助你。

1

此外,在合格的命名建議教程確實是「firstStepsServlet.FirstStepsApplication」而不是「com.firstStepsServlet.FirstStepsApplication」。

因此,web.xml中的建議param值是正確的。

您確認這可以解決您的問題嗎?另外,在閱讀本教程之前,您是否具有Servlet部署知識?如果不是,那會解釋痛苦。在這種情況下,獨立模式可能更適合。

-2

eSoftHead公司剛剛發佈了使用RESTeasy開發Restful應用程序的short tutorial

6

Restlet框架由四個主要部分組成。

1的Restlet API

首先,存在是「的Restlet API」,空檔API支持REST的概念和促進兩個客戶端和服務器端應用程序呼叫的處理。此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調用類。如果您需要多線程或更多控制,則仍然可以直接操作使用連接器類或請求對象。以下示例說明如何在您的客戶端調用中設置一些首選項,如引用來源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架構

讓我們回來一點點,並考慮從一個靜止點典型的web架構。在下面的圖表中,端口代表連接器,用於實現由較大的框表示的組件之間的通信。