2009-09-30 26 views
28

Các khung công tác tốt nhất để triển khai cả khung công tác REST của máy khách và máy chủ trong Java là gì? Tôi đã đấu tranh một chút để tìm một giải pháp dễ sử dụng.Các khung công tác dễ nhất để triển khai các dịch vụ web Java REST

Cập nhật: Cả Jersey và Restlet có vẻ là lựa chọn tốt. Có lẽ chúng tôi sẽ sử dụng Restlet nhưng chúng tôi sẽ thử nghiệm với cả hai.

+0

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

Trả lời

18

Restlet âm thanh như nó cần cung cấp những gì bạn đang tìm kiếm:

  • Hỗ trợ cho client và server (trong một api tương đối đối xứng)
  • url thông minh ràng buộc
  • loại mime hiểu biết (được chấp nhận loại mime, nó sẽ yêu cầu nguồn lực của bạn để đại diện cho chúng trong loại đó)
  • Hỗ trợ chú thích JAX-RS (giống như Jersey)
+3

+1 Tôi đã có kết quả xuất sắc Phục hồi trong một ứng dụng sản xuất lớn. –

23

Jersey thực sự dễ dàng cho cả hai. Để viết các dịch vụ web, bạn sử dụng chú thích:

@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"; 
    } 
} 

Đối với một khách hàng:

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 cho Jersey, triển khai tham chiếu JAX-RS (JSR 311). Ngoài ra, hãy xem http://java.sun.com/javaone/2009/articles/gen_restful.jsp –

3

Restlet cũng hỗ trợ các chú thích trong phiên bản 2.0 của nó, cả trên máy khách và server-side. API JAX-RS cũng được hỗ trợ dưới dạng tiện ích mở rộng.

Dưới đây là một ví dụ đơn giản cho server-side:

public class HelloWorldResource extends ServerResource { 

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

} 

Trên client-side:

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

Đối với tài liệu hơn nữa, check this page.

+0

Restlet có vẻ đầy hứa hẹn, nhưng tài liệu là đáng thất vọng. – deamon

+0

Sách "Restlet in Action" sẽ được Manning xuất bản vào tháng 9 năm 2012. Nó có phạm vi bảo hiểm toàn diện. Tiếp theo, chúng tôi sẽ cải thiện hướng dẫn và Javadocs (phiên bản 2.2 và 3.0) –

2

Có thư viện RESTEasy mới của JBoss. Nó dường như được phát triển nhanh chóng kể từ khi ra mắt ban đầu. Tôi không biết liệu nó có tốt hay không; nó nằm trong danh sách 'check it out' của tôi.

0

Tôi đã không sử dụng nó cá nhân nhưng một số đội mà tôi làm việc với đang sử dụng Spring 3 MVC. REST in Spring 3: @MVC trông giống như tổng quan về bài đăng trên blog tốt. Các tính năng RESTful bao gồm "URI Templates", "Content Negotiation", "HTTP Method Conversion", "ETag support" và hơn thế nữa.

Sửa: Ngoài ra, xem câu hỏi này: Can anyone recommend a Java web framework that is based on MVC and supports REST ?

0

tôi có thể khuyên Apache nháy mắt, một khuôn khổ mới vẫn còn trong chế độ ủ, nhưng chất lượng rất trưởng thành và cao.

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

Nó thực hiện các đặc điểm kỹ thuật JAX-RS, nó có cả khung máy chủ của khách hàng để phát triển & REST. Apache đang đứng sau dự án này - đó luôn là dấu hiệu tốt (và giấy phép tốt :-))

Điều tôi thích nhất về khung công tác này là tích hợp trực quan với Spring, nó rất hữu ích nếu bạn muốn khung của mình trở thành dễ dàng cấu hình và mở rộng.

+0

BTW, Restlet cũng được phân phối theo Giấy phép Công cộng Apache, cùng với các tùy chọn cấp phép khác (EPL, LGPL 2.1 và 3.0, CDDL) :) –

0

CẬP NHẬT: Xydra Restless không còn được duy trì +++ Nếu bạn đang sử dụng Goolge AppEngine trước khi phát hành tính năng "dụ dự trữ", bạn có thể xem xét Xydra Restless có ít tính năng nhưng tải nhanh.

1

Bạn có thể xem xét triển khai CXAX JAX-RS. Để biết danh sách đầy đủ các tính năng của nó, hãy kiểm tra CXF web site for JAX-RS. Cộng đồng phía sau dự án dường như rất tích cực (tháng 7 năm 2013). Một dấu hiệu cho thấy đó là số lượng tin nhắn mỗi ngày trong CXF mailing lists.

-1

ưa thích của tôi là mùa xuân MVC, bạn có hỗ trợ cho cả hai, client và server bên ... Và bạn phải hỗ trợ Android quá =)

Ví dụ, bạn có thể thấy một ví dụ về mùa xuân Android here

+0

Liên kết Android vào blog của Javier, có vẻ như không trực tuyến nữa. –

Các vấn đề liên quan