REST nên được sử dụng nếu nó rất quan trọng đối với bạn để giảm thiểu khớp nối giữa các thành phần máy khách và máy chủ trong một ứng dụng phân tán.
Đây có thể là trường hợp nếu máy chủ của bạn sẽ được sử dụng bởi nhiều khách hàng khác nhau mà bạn không có quyền kiểm soát. Nó cũng có thể là trường hợp nếu bạn muốn có thể cập nhật máy chủ thường xuyên mà không cần cập nhật phần mềm máy khách.
Tôi có thể đảm bảo với bạn rằng việc đạt được mức độ ghép thấp này là không dễ thực hiện . Điều quan trọng là phải tuân theo tất cả các ràng buộc của REST để thành công. Duy trì một kết nối hoàn toàn không trạng thái là khó khăn. Chọn đúng loại phương tiện và ép dữ liệu của bạn vào các định dạng là khó khăn. Tạo các loại phương tiện truyền thông của riêng bạn có thể còn khó hơn.
Việc điều chỉnh hành vi máy chủ phong phú vào giao diện HTTP thống nhất có thể gây nhầm lẫn và đôi khi xuất hiện phạm vi so với phương pháp RPC tương đối đơn giản.
Mặc dù có những khó khăn, nhưng lợi ích là bạn có một dịch vụ mà nhà phát triển khách hàng có thể dễ dàng hiểu được do việc sử dụng giao thức HTTP nhất quán. Dịch vụ này có thể dễ dàng khám phá do hypermedia và máy khách phải cực kỳ linh hoạt với các thay đổi trên máy chủ .
Những lợi ích của hypermedia và tránh trạng thái phiên làm cho việc cân bằng tải trở nên đơn giản và phân vùng dịch vụ là khả thi . Sự tuân thủ nghiêm ngặt các quy tắc HTTP làm cho sự sẵn có của các công cụ như trình gỡ lỗi và proxy lưu trữ là điều tuyệt vời.
Cập nhật
Dường như với tôi rằng REST là một 'từ cuối cùng của thời trang' (hoặc tôi có thể hoàn toàn sai vì tôi chưa bao giờ thấy REST trong thực tế).
Tôi nghĩ rằng REST đã trở thành mốt bởi vì mọi người khi cố gắng thực hiện các dự án kiểu SOA đã phát hiện ra rằng sử dụng ngăn xếp SOAP họ không nhận ra những lợi ích đã được hứa hẹn. Mọi người tiếp tục quay lại web như một ví dụ về các phương pháp tích hợp đơn giản. Thật không may, tôi nghĩ mọi người đánh giá thấp số lượng kế hoạch và tầm nhìn xa đã tạo ra web và họ áp dụng quá mức những gì cần phải làm để cho phép loại tái sử dụng tình cờ xảy ra trên web.
Bạn nói rằng bạn chưa bao giờ thấy REST trong thực tế, nhưng điều đó không thể đúng nếu bạn từng sử dụng trình duyệt web. Trình duyệt web là một ứng dụng khách REST.
- Tại sao bạn không cần cập nhật trình duyệt khi ai đó thay đổi một số html trên trang web?
- Tại sao tôi có thể thêm một bộ trang hoàn chỉnh mới vào một trang web và "khách hàng" vẫn có thể truy cập các trang mới đó mà không cần cập nhật?
- Tại sao tôi không cần cung cấp "ngôn ngữ mô tả dịch vụ" cho trình duyệt web để thông báo cho nó khi truy cập http://example.org/images/cat rằng loại trả về sẽ là hình ảnh jpeg và khi bạn đi đến
http://example.org/description/cat
loại trả về sẽ là văn bản / html?
- Tại sao tôi có thể sử dụng trình duyệt web để truy cập các trang web không tồn tại khi trình duyệt được phát hành? Làm thế nào khách hàng có thể biết về các trang web này?
Những câu hỏi này nghe có vẻ giống như những câu hỏi vô ích, nhưng nếu bạn biết câu trả lời, thì bạn có thể bắt đầu xem REST là gì. Nhìn vào StackOverflow để biết thêm lợi ích của REST. Khi tôi đang xem một câu hỏi, tôi có thể đánh dấu trang đó hoặc gửi url cho một người bạn và anh ta có thể xem thông tin tương tự. Anh ta không phải điều hướng qua trang web để tìm câu hỏi đó.
StackOverflow sử dụng nhiều dịch vụ OpenId để xác thực, gravatar.com cho hình ảnh đại diện, phân tích google và Quantserve cho thông tin phân tích. Kiểu tích hợp đa công ty này là kiểu thế giới SOAP chỉ mơ ước . Một trong những ví dụ tốt nhất là thực tế là các thư viện jQuery được sử dụng để điều khiển UI StackOverflow được lấy từ Mạng phân phối nội dung của Google. Việc SO có thể hướng khách hàng (tức là trình duyệt web của bạn) tải xuống mã từ trang web của bên thứ ba để cải thiện hiệu suất là minh chứng cho sự kết hợp thấp giữa máy khách web và máy chủ.
Đây là những ví dụ về kiến trúc REST tại nơi làm việc.
Bây giờ một số trang web / ứng dụng phá vỡ các quy tắc của REST và sau đó trình duyệt không hoạt động như mong đợi.
- Vấn đề nút quay lại khét tiếng
là do sử dụng trạng thái phiên phía máy chủ.
- Cân bằng tải có thể trở thành một nỗi đau khi bạn có trạng thái phiên phía máy chủ.
- Các ứng dụng flash thường ngăn URL xác định cụ thể một đại diện.
- Vấn đề khác làm hỏng trình duyệt web là sự tuân thủ kém đối với các tiêu chuẩn loại phương tiện truyền thông. Chúng tôi nghe tất cả thời gian về cách IE6 cần phải bị giết. Vấn đề ở đây là các tiêu chuẩn không được tuân thủ đúng, hoặc bị bỏ qua vì bất kỳ lý do gì.
- Việc sử dụng các phiên đăng nhập là nguồn gốc của nhiều lỗ hổng bảo mật.
REST ở khắp mọi nơi. Nó là một phần của web làm cho nó hoạt động tốt. Nếu bạn muốn xây dựng các ứng dụng phân tán có thể mở rộng như web, hãy kiên cường thay đổi như web và thúc đẩy sử dụng lại như web đã làm, sau đó làm theo các quy tắc tương tự họ đã làm khi xây dựng trình duyệt web.