AFAIK Fielding đã không tuyên bố REST là tốt, ông chỉ mô tả kiến trúc thực tế của web.
Điều đó nhấn mạnh nó một chút, tôi sẽ nghĩ. Cuối cùng, REST là một bảng liệt kê của phong cách kiến trúc mà Fielding đang sử dụng với tư cách là kiến trúc sư trưởng của thông số HTTP / 1.1 .
Nhưng có thực sự có lý do nào để nghĩ REST là một kiến trúc mong muốn cho miền này không? Có bằng chứng nào cho thấy HATEOAS là một nguyên tắc thiết kế có lợi cho giao tiếp giữa máy với máy không?
"Nó phụ thuộc". HATEOAS là một phần của ràng buộc giao diện thống nhất của REST.
Bằng cách áp dụng nguyên tắc công nghệ phần mềm về tính tổng quát cho giao diện thành phần, kiến trúc hệ thống tổng thể được đơn giản hóa và khả năng hiển thị của các tương tác được cải thiện. Việc triển khai được tách rời khỏi các dịch vụ mà họ cung cấp, điều này khuyến khích khả năng phát triển độc lập. Mặc dù vậy, sự đánh đổi là một giao diện thống nhất làm giảm hiệu quả, vì thông tin được truyền dưới dạng chuẩn chứ không phải là giao diện cụ thể cho nhu cầu của ứng dụng. Giao diện REST được thiết kế để có hiệu quả cho việc truyền dữ liệu hypermedia hạt lớn, tối ưu hóa cho trường hợp phổ biến của Web, nhưng dẫn đến giao diện không tối ưu cho các hình thức tương tác kiến trúc khác.
Vì vậy, hãy suy nghĩ một chút về điều này có nghĩa là gì. Khi tôi gặp sự cố với bộ định tuyến không dây của mình, tôi có thể giao tiếp với nó bằng cùng một trình duyệt mà tôi sử dụng để gửi câu trả lời cho stackexchange. Cụ thể, không quan trọng tôi đang sử dụng trình duyệt nào, hoặc trình duyệt của tôi có một vài cập nhật phía sau (hoặc trước) về những gì bộ định tuyến đang mong đợi. Không có vấn đề gì khi tổ chức kỹ thuật viết trình duyệt hoàn toàn độc lập với tổ chức đã tạo giao diện bộ định tuyến.
Nó chỉ hoạt động .
Tất nhiên, nó không phải là phổ quát. Fielding, năm 2008 , đã viết:
Điều đó không có nghĩa là tôi nghĩ mọi người nên thiết kế hệ thống của riêng mình theo phong cách kiến trúc REST. REST dành cho các ứng dụng dựa trên mạng tồn tại lâu dài trải rộng trên nhiều tổ chức. Nếu bạn không thấy sự cần thiết cho các ràng buộc, thì đừng sử dụng chúng.
Các ràng buộc hình thành phong cách kiến trúc REST đã được chọn cho các thuộc tính mà chúng tạo ra; nếu các thuộc tính đó không có giá trị đối với trường hợp sử dụng của bạn, thì bạn hoàn toàn nên xem xét loại bỏ các ràng buộc tương ứng.
Trường hợp máy với máy gặp khó khăn, là bạn đã mất khả năng của con người để phù hợp với ngữ nghĩa được cung cấp bởi các đại diện. Các khách hàng có thể nhận được bằng cách chỉ biết các loại phương tiện, nhưng chúng ta thường có một con người nhìn vào các tín hiệu ngữ nghĩa để rút ra ý nghĩa.
lược đồ.org là một phần trong nỗ lực tạo ra một từ vựng có thể đọc được bằng máy; các tác nhân máy sử dụng máy khách để tìm các gợi ý ngữ nghĩa và áp dụng sự hiểu biết của riêng nó về ý nghĩa để chọn các hành động chính xác cần thực hiện.
Nhưng nó hoạt động; bạn cần đầu tư phát triển các đại diện thân thiện với máy của các tài nguyên của mình và đảm bảo rằng các đại diện đó vẫn tương thích tiến và lùi, để khách hàng có thể được phát triển độc lập.
Khi một tổ chức duy nhất kiểm soát cả máy khách và máy chủ, lợi ích của sự độc lập này nhỏ hơn rất nhiều, trong trường hợp đó, ràng buộc có thể không phải là một lựa chọn kiến trúc phù hợp.