实现Java REST web服务最简单的框架

29

什么是在Java中实施客户端和服务器REST框架的最佳解决方案?我一直在努力寻找易于使用的解决方案。

更新: Jersey和Restlet似乎都是不错的选择。我们可能会使用Restlet,但会尝试两种方式。


http://meta.stackexchange.com/questions/71068/a-few-possible-duplicate-questions-about-java-rest-what-should-we-do - ripper234
10个回答

24

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
+1 为Jersey点赞,它是JAX-RS(JSR 311)参考实现。同时请查看http://java.sun.com/javaone/2009/articles/gen_restful.jsp。 - Pascal Thivent

20

Restlet听起来应该提供您正在寻找的内容:

  • 支持客户端和服务器(在相对对称的API中)
  • 智能URL绑定
  • MIME类型理解(给定接受的MIME类型,它会要求您的资源以该类型呈现自己)
  • 支持JAX-RS注释(就像Jersey一样)

4
在一个大型生产应用中,我使用Restlet取得了优秀的结果。+1 - Jim Ferrans

6

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);

如需更多文档,请查看此页面


Restlet看起来很有前途,但是文档令人失望。 - deamon
“Restlet in Action”一书将于2012年9月由Manning出版。它具有全面的覆盖范围。接下来,我们将改进教程和Javadocs(版本2.2和3.0)。 - Jerome Louvel

2

JBoss有一个新的RESTEasy库。自其首次推出以来,它似乎在快速发展。我不知道它是否好用;它在我的“查看”列表中。


1

1
你可以看一下CXF JAX-RS实现。要查看其完整功能列表,请访问CXF JAX-RS网站。 该项目背后的社区似乎非常活跃(截至2013年7月)。这一迹象是CXF邮件列表中每天的消息数量。

0
我可以推荐Apache Wink,这是一个仍处于孵化模式的新框架,但非常成熟和高质量。

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

它实现了JAX-RS规范,同时拥有REST开发的客户端和服务器框架。Apache支持这个项目 - 这总是一个好兆头(也是一个好的许可证 :-))。

我最喜欢这个框架的地方就是与Spring的直观集成,如果你想要让你的框架容易配置和扩展,这非常有用。


顺便提一下,Restlet也是在Apache Public License下分发的,此外还有其他许可选项(EPL、LGPL 2.1和3.0、CDDL):) - Jerome Louvel

0

更新:Xydra Restless不再维护 +++ 如果您在Google AppEngine发布“保留实例”功能之前使用它,您可能需要考虑使用Xydra Restless,它具有一些功能但加载速度快。


-1

我最喜欢的是Spring MVC,它支持客户端和服务器端...而且还支持Android =)

例如,你可以在这里看到一个Spring Android的例子here


Android的链接指向Javier自己的博客,但似乎已经不再在线上了。 - Sander Verhagen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接