RESTful Java Web Services框架的建议...

5

我在谷歌上搜索了一些关于Web服务的信息,它似乎是一个企业级应用程序。我发现RESTful设计在这方面是个很棒的想法。我发现Apache CXF看起来很酷,它支持RESTful设计和Java。对于初学者来说,使用Apache CXF编写应用程序是一个不错的选择吗?还是有其他框架推荐呢?

6个回答

8

我会选择Jersey,它是JAX-RS(JSR 311)的RI,也就是Java RESTful Web服务的API标准。


4
我建议使用JAX-RS,因为在我看来,它是最中立的框架,可以告诉你如何正确地实现REST。我没有使用过CXF,只用过Jersey。它是一个非常稳定的实现,并且还带有一个良好的客户端连接器(客户端不是JAX-RS的一部分)。
在“如何实现REST”的问题上保持中立很重要,因为某些方面(例如超媒体设计)还没有被公认为“最佳”方法。
祝贺您选择了REST方式 - 您不会后悔。
Jan

2

对于初学者来说,更简单的实现方式是使用 Spring 3.0 的 REST 支持。Spring MVC 3.0 提供了 REST 支持,相比 Apache CXF 来说要简单得多。


哇...下次最好读清楚问题...错过了“Web服务”这个词。我想到了RESTful架构风格。 - spa
能否详细说明您所说的内容或提供更好的资源来解释它们? - Teja Kantamneni
我认为@spa是在回答我的评论,这不是对你的回答的直接评论。 - Pascal Thivent

1

Restlet似乎不像Apache CXF和Spring那样出名,那么它有什么特殊的功能吗? - DNB5brims
您可以查看Restlet提供的功能列表:http://www.restlet.org/about/featuresApache CXF和Spring MVC都是非常好的项目。但与Restlet不同,它们并不专注于REST应用程序。 - Desintegr
Restlet在JAX-RS之前出现,因此它有自己的架构。我确实看到了他们添加JAX-RS 1.0集成的功能。 - TJR

1

我用 RESTEasy 开始使用REST,并在30分钟内完成了配置。您可以将其作为独立的库在喜爱的 servlet 容器中使用,而无需使用所有这些 JBoss 环境。


1
你应该尝试使用Play框架。只需查看示例路由文件,你就会知道使用Play实现RESTful Web应用程序有多容易:
# ====== Order service =========================
GET /orders Orders.list
GET /orders/{<[0-9]+>id} Orders.show
PUT /orders/{<[0-9]+>id} Order.saveUpdate
POST /orders Orders.saveNew
# ==============================================

以及相应的控制器方法:

public class Orders extends Controller {
   public static void list() {
      List<Order> orders = Order.all();
      render(orders);
   }
   public static void show(long id) {
      Order order = Order.findById(id);
      notFoundIfNull(order);
      render(order);
   }
   public static void saveUpdate(long id, Order update) {
      Order order = Order.findById(id);
      notFoundIfNull(order);
      order.update(update);
      show(id);
   }
   public static void saveNew(Order order) {
      order.save();
      show(order.getId());
   }
}

有一些实用程序可以使您与其他Web服务进行交互:

String url = "https://ajax.googleapis.com/ajax/services/search/web";
Map<String, Object> params = new HashMap<String, Object>();
params.put("v", "1.0");
params.put("q", searchStr);
params.put("key", Play.configuration.get("app.google.key"));
params.put("userip", myIpAddr);
HttpResponse resp = WS.url(url).params(params).get();
return resp.getString();

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