Tôi mới sử dụng các dịch vụ web RESTful và RESTlet. Chúng tôi chỉ có kinh nghiệm xây dựng các ứng dụng web dựa trên servlet (Servlet/JSP trên JBoss/Apache). Bây giờ, chúng tôi đang xây dựng một ứng dụng dựa trên RESTlet nơi API phía máy chủ sẽ được sử dụng bởi hai loại máy khách - web sử dụng trình duyệt và xoay dựa trên máy tính để bàn.Làm cách nào để thực thi 'phiên' trong các dịch vụ web RESTful bằng RESTlet?
Những gì tôi hiểu là theo REST của khái niệm a) máy chủ không thể duy trì các buổi để cải thiện khả năng mở rộng và vài lý do khác b) mỗi yêu cầu từ khách hàng nên được khép kín
Bây giờ, tôi thực sự bối rối làm thế nào để đạt được điều này. Giả sử chúng ta lấy một ứng dụng giỏ mua hàng đơn giản.
Bước 1) Máy khách gửi yêu cầu xác thực, máy chủ xác thực và máy chủ phản hồi OK.
Bước 2) Khách hàng gửi yêu cầu thêm một mục vào giỏ hàng. Máy chủ phản hồi OK.
Bước 3) Khách hàng gửi yêu cầu khác để thêm mục thứ 2 vào thẻ mua sắm. Máy chủ phản hồi OK.
Thông thường, trong một ứng dụng web thông thường, phiên được tạo ở Bước 1 trên máy chủ và từ đó trở đi, tất cả các yêu cầu liên quan đến ứng dụng đó sẽ tự động được liên kết với cùng một phiên và chúng tôi lưu trữ trạng thái phiên trường hợp) trong đối tượng phiên và truy xuất/cập nhật nó với các yêu cầu tiếp theo từ máy khách.
Bây giờ, trong kịch bản trên:
1) làm thế nào để chúng tôi xác thực và ủy quyền cho khách hàng ở bước 2 và 3 nếu không có phiên duy trì trên máy chủ?
2) khách hàng có cần gửi một số thông tin bổ sung cho từng yêu cầu không?
3) Cách chúng tôi truy xuất Giỏ hàng cụ thể của khách hàng trong Bước 3?
4) Khách hàng có cần gửi Giỏ hàng của mình đã được tạo/trả lại bằng máy chủ ở Bước 2 một lần nữa ở Bước 3 không?
Rõ ràng, đây là trường hợp sử dụng đơn giản nhất và vì vậy mọi người phát triển các dịch vụ web RESTful phải thiết kế ứng dụng của họ để xử lý việc này. Cách tốt nhất và phổ biến nhất để xử lý việc quản lý phiên, xác thực, ủy quyền trong các dịch vụ web RESTful bằng RESTLet là gì? Nếu chúng ta phải duy trì bộ nhớ cache ở phía máy chủ với dữ liệu của khách hàng thì điều này khác với máy chủ duy trì các phiên thay mặt chúng ta như thế nào?
Cảm ơn trước, Sâu
nhưng tại sao nó lại tệ nếu máy chủ nhớ bạn là ai (và chỉ vậy). nếu bạn không tuân thủ REST spec theo cách thủ công, bạn có thể thỏa hiệp và tiết kiệm cho mình khỏi việc gửi xác thực mỗi yêu cầu duy nhất. – amphibient
Thiết kế của bạn có thể tồn tại khi khởi động lại không? Bên cạnh đó luôn luôn có một số kiểm tra để đảm bảo rằng đó là cùng một người và không phải là một phiên bị đánh cắp. – PhD