2008-12-02 36 views
33

Mọi hướng dẫn hoặc giải thích về REST chỉ diễn ra quá phức tạp quá nhanh - đường cong học tập tăng quá nhanh sau lời giải thích ban đầu của CRUD và sự đơn giản được cho là trên SOAP. Tại sao mọi người không thể viết hướng dẫn phong nha nữa!Bất kỳ hướng dẫn REST dễ dàng nào cho Java?

Tôi đang xem Restlet - và nó không phải là tốt nhất, có những điều còn thiếu trong hướng dẫn và ngôn ngữ/ngữ pháp hơi khó hiểu và không rõ ràng. Nó đã đưa tôi giờ để gỡ rối bước đầu tiên hướng dẫn của họ

Restlet Tutorial Bình luận

Nói chung tôi không chắc chắn chính xác ai là người hướng dẫn đã được nhắm vào (với sự giúp đỡ của một lập trình viên Java!) - vì có là một mức độ công bằng của kiến ​​thức giả định tất cả các vòng, do đó, đi vào REST và Restlet khuôn khổ lạnh lá bạn với rất nhiều 'công việc bắt' để làm, và đọc lại đoạn văn hơn và hơn nữa.

  1. Chúng tôi gặp khó khăn khi làm việc rằng các lọ phải được sao chép vào thư mục lib chính xác.

  2. Vấn đề với web.xml tạo ra một trạng thái HTTP 500 lỗi -

Máy chủ gặp lỗi nội bộ() mà ngăn chặn nó từ thực hiện yêu cầu này

, hướng dẫn cho biết:

"Tạo ứng dụng Web Servlet mới như bình thường, thêm gói " com.firstStepsServlet "và đặt tài nguyên và ứng dụng lớp vào".

này có nghĩa là tên đầy đủ của bạn cho lớp học của bạn FirstStepsApplicationcom.firstStepsServlet.FirstStepsApplication, vì vậy chúng tôi đã phải thay đổi web.xml để tham khảo các lớp đúng ví dụ:

gốc:

<param-value> 
     firstStepsServlet.FirstStepsApplication 
</param-value> 

nên là:

<param-value> 
     com.firstStepsServlet.FirstStepsApplication 
</param-value> 

Kết luận

Tôi đã theo ấn tượng rằng các khái niệm của REST được coi như là đơn giản hơn nhiều so với SOAP - nhưng có vẻ như chỉ là xấu nếu không nói là phức tạp hơn - không hiểu gì cả ! grrrr

Bất kỳ liên kết tốt nào - được đánh giá cao.

+6

Oh, làm thế nào để tôi cảm thấy đau đớn của bạn! Chắc chắn là một cuộc bỏ phiếu! – BobbyShaftoe

+0

Kiểm tra http://stackoverflow.com/questions/1710199/which-is-the-best-java-rest-api-restlet-or-jersey và xem xét liệu đây có phải là bản sao chính xác hay không. – ripper234

+1

Tôi đồng ý với bạn! Người ta sẽ nghĩ rằng một API như RESTlet sẽ "giúp" bạn. Tôi có thể viết một khung công tác dịch vụ web đơn giản trong một phần ba thời gian để tôi hiểu kiến ​​trúc RESTlet. – Spider

Trả lời

9

Có vẻ như bạn có thể sử dụng kiến ​​thức vững chắc về các nguyên tắc cơ bản của REST và cho rằng tôi cao đề xuất RESTful Web Services bởi Leonard Richardson và Sam Ruby.Tôi cung cấp một giới thiệu tuyệt vời cho REST: nó là gì và làm thế nào để thực hiện một dịch vụ web RESTful (thực tế).

Hầu hết mã ví dụ trong sách thực sự là Ruby, nhưng thật dễ dàng để hiểu ngay cả khi bạn không phải là chuyên gia về Ruby. Nhưng một điều mà sẽ giúp bạn đặc biệt là một trong những chương sau của cuốn sách có chứa tổng quan về một số khung công tác RESTful, bao gồm cả Restlet. Nó không thực sự nhận được vào bất kỳ mã nào (đó là một cầu vượt 50.000 foot) nhưng tôi nghĩ nó sẽ cung cấp cho bạn những gì bạn cần ở giai đoạn này.

+2

Funnily đủ Tôi vừa ra lệnh cho RESTful Web Services trên Amazon trước khi tôi đọc bài viết của bạn. Cảm ơn các ý kiến ​​quý giá của bạn quá. – Vidar

14

Bạn có thể mô tả chính xác điều gì khiến bạn gặp khó khăn trong hướng dẫn Restlet của chúng tôi không? Chúng tôi quan tâm đến việc sửa chữa/cải thiện những gì cần.

Bạn đã kiểm tra các chương trình phát sóng? http://www.restlet.org/documentation/1.1/screencast/

Nếu không, có một hướng dẫn Restlet trong cuốn sách O'Reilly mà chúng tôi đã viết trong Chương họ 12.

Nếu bạn vẫn còn khó khăn, vui lòng liên hệ mailing list của chúng tôi: http://www.restlet.org/community/lists

nhất regards, Jérôme Louvel

Restlet ~ Người sáng lập và phát triển Chì ~ http://www.restlet.org Noelios Technologies ~ Đồng sáng lập ~ http://www.noelios.com

+1

Vui lòng xem các chỉnh sửa mới của tôi trong câu hỏi của tôi - cổ vũ. – Vidar

2

bạn trỏ đến lỗi bên trong web.xml, nhưng tôi vừa kiểm tra cả hai tài liệu Restlet 1.0 và 1.1 và tôi không thấy loại lỗi này. Tôi muốn đề cập rằng bạn có thể tìm thấy ở cuối trang một tệp zip chứa tệp chiến tranh hoàn chỉnh và danh sách các tệp nguồn trong trường hợp bạn muốn chạy ở chế độ "độc lập". Bạn đã thử chế độ độc lập chưa? Như đã giải thích trong tuto, bạn chỉ cần 2 lọ trong classpath và các tệp nguồn.

Chúng tôi cũng muốn chỉ ra rằng hướng dẫn "firstSteps" không phải là hướng dẫn về REST mà là trên chương trình với Restlet. Bạn cũng có thể xem hướng dẫn "firstResource" (http://www.restlet.org/documentation/1.1/firstResource) mô tả cách phát triển một tài nguyên đơn giản và giới thiệu một số khái niệm về kiểu kiến ​​trúc REST. Nó sẽ giúp bạn.

1

Bên cạnh đó, trình độ tên là gợi ý trong hướng dẫn thực sự là "firstStepsServlet.FirstStepsApplication" và không phải là "com.firstStepsServlet.FirstStepsApplication".

Do đó, giá trị tham số được đề xuất trong tệp web.xml là chính xác.

Bạn có thể xác nhận rằng điều này khắc phục được sự cố của mình không? Ngoài ra, bạn đã có kiến ​​thức triển khai Servlet trước khi đọc hướng dẫn chưa? Nếu không, điều đó sẽ giải thích nỗi đau. Trong trường hợp này, chế độ độc lập có thể phù hợp hơn.

+0

Xem các chỉnh sửa mới của tôi trong bài đăng của tôi – Vidar

+0

Chúng tôi đã sửa lỗi đánh máy. Lưu ý rằng ngoài các trang firstSteps và firstResource được yêu cầu để giúp bạn bắt đầu một cách nhanh chóng, có một Hướng dẫn chi tiết hơn sẽ hướng dẫn bạn qua các khái niệm khác nhau của REST và Restlet: http://www.restlet.org/documentation/1.1/hướng dẫn –

-2

Công ty eSoftHead vừa phát hành short tutorial phát triển ứng dụng Restful bằng cách sử dụng RESTeasy.

6

Khung Restlet bao gồm bốn phần chính.

1. Restlet API

Thứ nhất, đó là "API Restlet", một API trung hỗ trợ các khái niệm về REST và tạo điều kiện cho việc xử lý các cuộc gọi cho cả client-side và server-side ứng dụng. API này được hỗ trợ bởi Restlet Engine và cả hai đều được vận chuyển trong một JAR ("org.restlet.jar").

Sự tách biệt giữa API và triển khai này tương tự với API giữa Servlet API và Web container như Jetty hoặc Tomcat hoặc giữa JDBC API và trình điều khiển JDBC cụ thể.

2. Lấy nội dung của một trang Web

Như chúng ta đã đề cập trong giấy giới thiệu, khuôn khổ Restlet là cùng lúc một khách hàng và một khung máy chủ. Ví dụ, Restlet có thể dễ dàng làm việc với các tài nguyên từ xa bằng cách sử dụng trình kết nối máy khách HTTP của nó. Một kết nối trong REST là một phần tử phần mềm cho phép giao tiếp giữa các thành phần, thường bằng cách thực hiện một bên của một giao thức mạng. Restlet cung cấp một số việc triển khai các trình kết nối máy khách dựa trên các dự án nguồn mở hiện có. Phần trình kết nối liệt kê tất cả các trình kết nối máy khách và máy chủ có sẵn và giải thích cách sử dụng và định cấu hình chúng.

Ở đây chúng ta sẽ nhận được các đại diện của một nguồn tài nguyên hiện có và đầu ra nó trong JVM console:

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

Lưu ý rằng ví dụ trên sử dụng một cách đơn giản để phát hành các cuộc gọi thông qua ClientResource lớp. Nếu bạn cần kiểm soát nhiều luồng hoặc kiểm soát nhiều hơn, bạn vẫn có thể thao tác sử dụng trực tiếp lớp Khách hàng hoặc trực tiếp yêu cầu Yêu cầu đối tượng. Ví dụ bên dưới cách đặt một số tùy chọn trong cuộc gọi khách hàng của bạn, như URI liên kết giới thiệu. Nó cũng có thể là các ngôn ngữ và các loại phương tiện mà bạn muốn nhận như một phản ứng:

// Create the client resource 
ClientResource resource = new ClientResource("http://www.restlet.org"); 

// Customize the referrer property 
resource.setReferrerRef("http://www.mysite.org"); 

// Write the response entity on the console 
resource.get().write(System.out); 

3. Lắng nghe các trình duyệt Web

Bây giờ, chúng tôi muốn xem cách khung Restlet có thể nghe khách hàng yêu cầu và trả lời chúng. Chúng ta sẽ sử dụng trình kết nối máy chủ HTTP Restlet nội bộ (mặc dù nó có thể chuyển sang những người khác như là dựa trên Jetty của Mortbay) và trả về một biểu diễn chuỗi đơn giản là "hello, world" dưới dạng văn bản thuần túy. Lưu ý rằng lớp Part03 mở rộng cơ sở ServerResource lớp được cung cấp bởi Restlet:

public class Part03 extends ServerResource { 

    public static void main(String[] args) throws Exception { 
     // Create the HTTP server and listen on port 8182 
     new Server(Protocol.HTTP, 8182, Part03.class).start(); 
    } 

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

} 

Nếu bạn chạy mã này và khởi động máy chủ của bạn, bạn có thể mở một trình duyệt Web và nhấn. Trên thực tế, bất kỳ URI nào cũng sẽ hoạt động, hãy thử thêm. Lưu ý rằng nếu bạn kiểm tra máy chủ của mình từ một máy khác, bạn cần phải thay thế "localhost" bằng địa chỉ IP của máy chủ của bạn hoặc tên miền của máy chủ nếu nó được xác định.

Cho đến nay, chúng tôi đã cho bạn thấy mức trừu tượng cao nhất trong API Restlet, với các lớp ClientResource và ServerResource. Nhưng khi chúng ta tiến lên phía trước, bạn sẽ khám phá ra rằng hai lớp đó được hỗ trợ bởi một API phong phú, cho phép bạn thao tác tất cả các tạo tác REST.

4. Tổng quan về một kiến ​​trúc REST

Hãy bước trở lại một chút và xem xét kiến ​​trúc web điển hình từ một điểm REST của xem. Trong sơ đồ dưới đây, các cổng đại diện cho đầu nối cho phép giao tiếp giữa các thành phần được biểu diễn bằng các hộp lớn hơn.

1

Đây là một tốt bằng văn bản hướng dẫn trên REST .. http://rest.elkstein.org/2008/02/what-is-rest.html

+0

Trong khi điều này về lý thuyết có thể trả lời câu hỏi, [nó sẽ là thích hợp hơn] (http://meta.stackexchange.com/q/8259) để bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo. – Jack

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