2010-02-13 78 views
5

我搜索了一些有关Web服务的信息,它似乎是一个企业级应用程序。我发现RESTful设计对此非常酷。我发现Apache CXF看起来很酷,它支持RESTful设计和Java。对于初学者来说,使用Apache CXF开始编写应用程序是一个不错的选择?或建议任何其他框架?关于RESTful Java Web服务框架的建议...

回答

4

我建议使用JAX-RS,因为恕我直言,这是在告诉你REST应该怎样做方面最中性的框架。我没有使用过CXF,只有泽西岛。它是一个非常稳定的实现,并且还带有一个很好的客户端连接器(客户端不是JAX-RS的一部分)。

保持中立关于“如何做REST”很重要,因为现在还没有一个公认的“最好”的方式来处理某些方面(例如超媒体设计)。

祝贺去的REST方式 - 你不会后悔。

2

对于初学者来说,简单得多的实现就是Spring 3.0 REST支持。 Spring MVC 3.0支持REST,与Apache CXF相比更加简单。

+0

@spa Web服务与Roo? – 2010-02-13 18:11:51

+0

哇...下次更好地阅读这个问题...错过了网络服务这个词。思考一种REST风格的架构风格。 – spa 2010-02-13 23:16:21

+0

@spa您能否详细说明您所说的内容或解释更好的资源? – 2010-02-13 23:30:49

1

的Restlet为Java另一个REST风格的Web框架:http://www.restlet.org/

+0

似乎并不像Apache CXF和Spring那么出名,Restlet中是否有特殊功能? – DNB5brims 2010-02-13 16:11:11

+0

您可以通过的Restlet提供的功能列表:http://www.restlet.org/about/features 的Apache CXF和Spring MVC是非常好的项目。但是,与Restlet不同,它们不专注于REST应用程序。 – Desintegr 2010-02-13 16:19:48

+0

Restlet出现在JAX-RS之前,因此它拥有自己的架构。我确实看到他们添加了JAX-RS 1.0集成的功能。 – TJR 2010-11-16 18:55:26

8

我会去JerseyJAX-RS的RI(JSR 311),用于REST Web服务的Java API的(即标准)。

1

我开始休息与RESTEasy并在30分钟内得到它。你可以在你喜欢的servlet容器中将它作为独立的lib使用,而不用所有这些JBoss的东西。

1

您应该尝试PlayFramework。只要看看战利品在样本路径的文件,你就会知道它是多么容易使用的发挥实现基于REST的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();