2009-09-30 84 views
28

在Java中實現客戶端和服務器REST框架的最佳框架是什麼?我一直在努力尋找一個易於使用的解決方案。實現Java REST Web服務的最容易的框架

更新:Jersey和Restlet都是不錯的選擇。我們可能會使用Restlet,但我們會試驗兩者。

+0

http://meta.stackexchange.com/questions/71068/a-few-possible-duplicate-questions-about-java-rest-what-should-we-do – ripper234 2010-11-27 18:38:57

回答

18

Restlet聽起來像它應該提供您要查找的內容:

  • 客戶端和服務器(在一個相對對稱的API)
  • 智能URL綁定
  • MIME類型的理解支持(考慮接受MIME類型,它會要求你的資源在這種類型的表示)
  • 支持JAX-RS註釋(就像澤西島)
+3

+1我有很好的結果Restlet在大型生產應用程序中。 – 2009-09-30 13:04:02

23

Jersey對於兩者來說都非常簡單。編寫Web服務,您使用註釋:

@Path("/helloworld") 
public class HelloWorldResource { 

    // The Java method will process HTTP GET requests 
    @GET 
    // The Java method will produce content identified by the MIME Media 
    // type "text/plain" 
    @Produces("text/plain") 
    public String helloWorld() { 
     // Return some cliched textual content 
     return "Hello World"; 
    } 
} 

對於客戶端:

Client client = Client.create(); 
WebResource webResource = client.resource("http://localhost:8080/helloworld"); 
String s = webResource.get(String.class); 
System.out.println(s); // prints Hello World 
+1

對於Jersey,JAX-RS(JSR 311)參考實現+1。另外看看http://java.sun.com/javaone/2009/articles/gen_restful.jsp – 2009-09-30 04:18:28

3

的Restlet還支持在其2.0版本的註釋,同時在客戶端和服務器端上。 JAX-RS API也作爲擴展支持。

這裏是服務器端的簡單示例:

public class HelloWorldResource extends ServerResource { 

    @Get 
    public String represent() { 
     return "hello, world"; 
    } 

} 

在客戶端:

// Outputting the content of a Web page 
new ClientResource("http://www.restlet.org").get().write(System.out); 

爲了進一步文檔,check this page

+0

Restlet看起來很有前途,但文檔卻令人失望。 – deamon 2010-07-29 09:09:09

+0

Manning於2012年9月出版了「Restlet in Action」一書,內容全面。接下來,我們將改進教程和Javadocs(版本2.2和3.0) – 2012-08-06 17:41:52

2

還有JBoss的新RESTEasy庫。自它首次發佈以來似乎處於快速發展階段。我不知道這是否有好處;它在我的'檢查出來'列表中。

0

我可以推薦阿​​帕奇眨眼,在培養模式的新框架還在,但非常成熟和高品質。

http://incubator.apache.org/wink/

它實現了JAX-RS規範,它具有REST開發包括客戶端&服務器框架。 Apache站在這個項目背後 - 這總是一個好兆頭(和一個很好的許可證:-))

我最喜歡的這個框架是與Spring的直觀集成,如果你希望你的框架是非常有用的輕鬆配置和擴展。

+0

順便說一下,除了其他許可選項(EPL,LGPL 2.1和3.0,CDDL)外,Restlet還在Apache公共許可證下分發:) – 2012-08-06 17:40:36

0

更新:Xydra Restless不再維護+++如果您在發佈「預留實例」功能之前使用Goolge AppEngine,則可能會考慮使用功能較少但加載速度很快的Xydra Restless

1

你可以看看CXF JAX-RS的實現。有關其功能的完整列表,請檢查CXF web site for JAX-RS。 該項目背後的社區似乎非常活躍(2013年7月)。其中的指示是CXF mailing lists中每天的消息數量。

-1

我最喜歡的是春MVC,你有兩個支持,客戶端和服務器端...你必須支持Android太=)

例如,你可以看到春天的一個例子的Android here

+0

Android鏈接是哈維爾自己的博客,似乎不再上網。 – 2014-07-23 17:24:02