2013-04-10 27 views
9

Tôi đã nhìn thấy nhiều ví dụ về cái gọi là Spring REST mà về cơ bản tất cả chỉ đơn giản là Spring MVC. Cấp rằng sử dụng JAXB và JAXON bạn có thể cung cấp các phản hồi XML và JSON, nhưng có nhiều thứ hơn với REST hơn là chỉ cung cấp phản hồi văn bản.Spring MVC là một khung công tác REST như thế nào?

Một vấn đề lớn là không một trong những ví dụ này đề cập đến bất kỳ điều gì về phiên; một ứng dụng REST được cho là phiên làm việc ít hơn, nhưng Spring MVC chắc chắn là phiên làm việc đầy đủ. Vì vậy, hiện Spring MVC bằng cách nào đó vô hiệu hóa phiên, hoặc là chúng ta phải vô hiệu hóa phiên khi chúng tôi sử dụng Spring MVC để thực hiện REST?

Nếu chúng ta phải tắt phiên; thế thì nó được thực hiện như thế nào?

+0

chúng ta cần phải xử lý các phiên ourself –

+2

+1, rất tốt câu hỏi – Jayy

Trả lời

9
  • Spring MVC không bật phiên cho đến khi bạn sử dụng;

  • Tôi hoàn toàn đồng ý rằng "hỗ trợ còn lại" trong mùa xuân nên được gọi là "url đẹp và tích hợp Jackson", nhưng ngày nay nó có ít hấp dẫn thị trường (mặc dù URL đẹp và JSON là điều duy nhất mọi người liên kết với REST; điều đó và ánh xạ CRUD thành động từ http).

  • REST là lựa chọn kiến ​​trúc không liên quan gì đến các phiên (cũng không phải là các url đẹp, cũng không phải json). Vì nó là một tôn giáo nhiều hơn là một kỹ thuật thực tế, không ai sẽ dịch nó cho bạn thành một bộ thực hành cố định. Bạn có thể có các phiên được mô hình hóa dưới dạng tài nguyên được tạo khi người dùng đăng nhập và biến mất sau một thời gian. Và cứ thế.

+0

Bạn có một nguồn mà Spring MVC không cho phép phiên cho đến khi bạn sử dụng chúng? Tôi không thể tìm thấy bất kỳ nguồn nào đề cập đến điều này. Tôi hoàn toàn đồng ý với tuyên bố thứ hai của bạn. Tuy nhiên, đối với câu lệnh thứ ba, session-less là một thuộc tính cơ bản của một dịch vụ web REST; nếu webapp của bạn sử dụng phiên, thì bạn không thể gọi nó là REST. – user1888243

+0

@ user1888243: tốt, tất cả chúng ta đều có ** nguồn có thẩm quyền nhất, cụ thể là, các nguồn :-) Bạn có thể grep nó cho các lần xuất hiện của "getSession" và xem. Ngay cả các thành phần như FlashMapManagers cố gắng không để mở phiên cho đến khi nó không thể tránh khỏi. Mặt khác, một số công nghệ mà bạn có thể sử dụng với Spring MVC (như Jasper) làm các phiên mở theo mặc định. – fdreger

+2

@ user1888243: Không có câu nào trong bài báo của Fielding nói điều gì đó từ xa như "nhưng hãy nhớ! Ngay cả khi bạn làm theo lời tôi ... ... nếu bạn sử dụng cookie có tên JSESSIONID, bạn KHÔNG được phép gọi ứng dụng của bạn ". Ứng dụng phải là "không quốc tịch" đối với những gì khách hàng nhìn thấy. Đằng sau mặt tiền tôi có thể sử dụng bất kỳ phương tiện kỹ thuật tôi thích, thậm chí bộ nhớ đệm một số nhà nước và gắn nó với một số khách hàng. Và ngược lại: ngay cả khi không sử dụng phiên làm việc và có các url đẹp nhất có thể, tôi có thể làm một ứng dụng xấu, không yên tĩnh. – fdreger

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