春季3.0 REST:
Spring使用基於註解控制器,其可用於爲一個URL綁定到控制器的方法。註解用於區分GET方法和POST方法。
@RequestMapping(value="/hotels/{hotel}/bookings/{booking}",
method=RequestMethod.GET)
public String getBooking(@PathVariable("hotel") long hotelId,
@PathVariable("booking") long bookingId, Model model) {
Hotel hotel = hotelService.getHotel(hotelId);
Booking booking = hotel.getBooking(bookingId);
model.addAttribute("booking", booking);
return "booking";
}
在引擎蓋下,URI字符串中的變量「hotel」在參數列表中被轉換爲long,就像預訂一樣。 Spring REST也可以使用這種相同的技術將JSON對象封送到自定義類中。請注意,此方法註釋爲RequestMethod.GET
,這意味着它被調用GET請求而不是POST請求。
Spring 3.0 REST通過消除手動重新創建輪子或編組/解組Java/JSON文本的需要,可以更輕鬆地創建REST式Web服務。
SpringSource博客上有一個演示,標題爲REST In Spring MVC。學習曲線很低,但得益於依賴關係,讓演示工作可能需要一些時間。一旦你安裝了並且有一個工作演示,最難的部分應該結束。
對於IDE集成,請查看Spring Roo。我沒有使用它,但我聽說它具有與Eclipse IDE集成的一些功能,使您的生活更輕鬆。
Restlets:
Restlets設計完全休息。結果,開銷比Spring 3.0要低很多。 Restlets更適合您沒有GUI的情況,以及您不關心MVC的情況。 Restlets可以輕鬆地作爲服務器和客戶端。它還有一個你可以運行的嵌入式服務器,它不需要像Jetty或Tomcat這樣的容器。
我已經很少接觸到Python,但從我看到的Google App Engine的webApp框架實現中,Router概念感覺非常相似。那些有Python背景的人可能會發現學習曲線要低得多:
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
getConnectorService().getClientProtocols().add(Protocol.FILE);
// Serve the files generated by the GWT compilation step.
Directory dir = new Directory(getContext(), LocalReference.createFileReference(new File("war/")));
router.attachDefault(dir);
router.attach("/contacts/123", ContactServerResource.class);
return router;
}
它在客戶端使用GWT;我更喜歡把這部分拿出來,因爲它讓我想起了太多的Java Swing。雖然有些人可能會發現這種優勢,但我的個人偏好是堅持那些更像Web的技術。
以下是使用獨立模式的REST服務器的簡單示例。服務器在端口8182上運行,並偵聽GET請求。它具有與Spring REST框架類似的基於註釋的模型,它還幫助分離不同的HTTP方法,並將它們指向類中的不同方法。這是一個非常基本的「Hello World」 REST示例:
public class FirstServerResource extends ServerResource {
public static void main(String[] args) throws Exception {
// Create the HTTP server and listen on port 8182
new Server(Protocol.HTTP, 8182, FirstServerResource.class).start();
}
@Get
public String toString() {
return "hello, world";
}
}
退房的Restlet Web Site更多的信息和Restlets框架的例子。 Restlets的學習曲線略少於Spring,因爲它的目標是REST;因此,它不包含Spring中包含的所有額外功能,有時可以使難題找到答案。如果您正在尋找輕量級的產品,Restlets絕對是您的選擇。
這兩個框架都將運行在Tomcat,Jetty以及Google App Engine上。
球衣看起來很有趣,會看着它!謝謝;-) – 2011-02-10 20:32:05