2011-11-13 21 views
9

Tôi đang cố gắng làm rõ khái niệm liên quan đến khả năng phát hiện REST - có hay không thỏa mãn ràng buộc HATEOAS cho một dịch vụ RESTful có nghĩa là bây giờ các URI có thể thay đổi, vì chúng có thể phát hiện và không được ghi lại.có khả năng phát hiện REST và HATEOAS ngụ ý rằng bạn có thể thay đổi URI không?

Điều đó dường như không tuân theo khái niệm về Cool URIs - thực tế là các URI không thay đổi, bao giờ hết. Nó cũng hơi không đồng nhất với mô hình của bản thân web (mà REST về cơ bản là hoàn toàn phù hợp) - thực tế là các URL có thể đánh dấu và không bao giờ thay đổi, và thực tế là khi bạn học một, bạn có thể truy cập trực tiếp vào nó và bạn không phải đi qua gốc và khám phá nó mỗi lần.

Bất kỳ phản hồi nào về điều này đều được đánh giá cao.

Trả lời

6

Đối với các URI nguội, không - bạn không nên thay đổi chúng, bao giờ hết. Chúng là những điểm vào trong hệ thống của bạn. Tuy nhiên, bạn nên có rất ít trong số đó nếu bạn muốn có khả năng phát triển phần còn lại của cấu trúc URI của hệ thống trong tương lai.

Đối với bất kỳ URI không phải là Cool nào, chúng thực sự có thể thay đổi theo thời gian. Gần đây tôi đã viết một số blog post về chủ đề này bởi vì tôi thấy khả năng của REST cho phép tôi phát triển hệ thống của mình theo thời gian để trở nên vô cùng hữu ích. Hãy chắc chắn rằng tài liệu API của bạn chỉ ra một thực tế là chỉ có một vài URI mát mẻ trong hệ thống của bạn nên được mã hóa cứng bởi các máy khách và bất kỳ URI nào khác sẽ được phát hiện khi chạy qua quá trình truyền siêu văn bản. Hãy nghĩ về chúng như một địa chỉ con trỏ C: không ai quan tâm giá trị hex của biến con trỏ là gì, nhưng chúng chắc chắn là heck muốn nó trỏ đến một vị trí hợp lệ trong bộ nhớ. Cũng vậy với các URI không phải của bạn - cấu trúc của chúng không quan trọng, nhưng thực tế là chúng được lấy ra trong thời gian chạy thông qua các cuộc hội thoại với máy chủ của bạn làm cho chúng hợp lệ.

+0

Cảm ơn phản hồi nhanh. Tôi đã đọc bài viết nhưng tôi vẫn chưa rõ ràng về một vài điều - trước tiên, không phải là phiên bản API dành cho? và thứ hai, liệu có BẤT K documentation tài liệu nào? Sự hiểu biết của tôi là trong một thực thi RESTful thuần túy, sẽ có khá nhiều tài liệu. Sẽ tốt hơn nếu chỉ sử dụng các url thú vị và thực hiện một phiên bản API khác cho một thay đổi sâu rộng như vậy? – Eugen

+1

Phiên bản API hoàn toàn để duy trì tính tương thích của cấu trúc URI dẫn đến các vấn đề tương tự như có WSDL cho mỗi phiên bản dịch vụ web của bạn: bạn không phát triển dịch vụ của mình, bạn đang thêm phiên bản mới (chủ yếu được nhân đôi) mỗi lần bạn sẽ cần phải kiểm tra, duy trì, tài liệu, vv Làm điều đó, và nói lời tạm biệt với một lợi ích to lớn của REST: sự tiến hóa năng động của "hợp đồng" của bạn và sự tách rời tuyệt vời của máy khách và máy chủ. –

+0

Và vì không có tài liệu, chắc chắn - khi toàn bộ thế giới phần mềm đã phát triển chuyên môn với REST, nó sẽ có ý nghĩa hoàn hảo. Sẽ luôn có những người mới muốn sử dụng API của bạn, và cho họ không có gì để làm việc với không có ý nghĩa với tôi. Chắc chắn, một chuyên gia REST có thể ngồi xuống và tìm ra tất cả, nhưng đó không phải là thế giới chúng ta đang sống.Ghi lại các loại phương tiện truyền thông của bạn và ngữ nghĩa của từng tài nguyên và cung cấp mã mẫu cho thấy các máy khách được xây dựng tốt nên được xây dựng như thế nào và bạn sẽ ổn. –

0

Phải có tài liệu. MediaTypes và mối quan hệ liên kết là điểm ghép nối và cả máy khách và máy chủ phải hiểu điều đó. Đó là lý do tại sao HTML, ATOM và RSS có các tiêu chuẩn.

Về mặt chức năng thời gian chạy, tôi có thể thấy không có tài liệu. Tôi không cần biết những gì Yahoo có trên trang chủ của nó bởi vì tôi có thể khám phá điều đó. Cách tương tự, một khách hàng của dịch vụ của tôi không cần biết về một tính năng mới mà tôi phát hành. Họ có thể tìm thấy các liên kết tồn tại và sau đó sử dụng mối quan hệ liên kết để xem những gì nó làm.

Vì vậy, tài liệu hướng dẫn về các tiêu chuẩn và giao thức sẽ được sử dụng, chứ không phải cách ứng dụng tự hoạt động

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