2015-04-12 13 views
27

Tôi hiện đang đọc "Nghỉ ngơi trong thực tế" cuốn sách. Tôi không thể hiểu thuật ngữ sau Hypermedia, định dạng hypermedia, điều khiển hypermedia, giao thức ứng dụng tên miền. Tác giả đã gợi ý nhu cầu về định dạng hypermedia miền cụ thể. Tôi khó có thể hiểu được. Tôi googled những điều khoản này nhưng không thể tìm thấy một câu trả lời đúng. Bất cứ ai có thể giải thích các thuật ngữ này và tại sao chúng ta cần định dạng hypermedia miền cụ thể thay vì ứng dụng/xml?là những gì hypermedia, điều khiển hypermedia, định dạng hypermedia

Trả lời

3

Hypermedia = thực tế là máy khách và máy chủ đang nói về một số biểu diễn thống nhất ví dụ: liên kết siêu.


Điều khiển HyperMedia = Tài nguyên cần phải thực hiện thao tác trên đó. Vì vậy, ví dụ một sản phẩm được đại diện bởi tên miền siêu liên kết/sản phẩm/001 thì tài nguyên có thể được vận hành (chỉnh sửa và xóa) trên miền kiểm soát hypermedia/sản phẩm/001/chỉnh sửa và miền/sản phẩm/001/xóa.


Sự khác biệt lớn nhất là trong cách tiếp cận. hệ thống thủ tục đầu tiên viết các hoạt động như chuyển tiếp trạng thái trong mã tuần tự (java, vv), sau đó các tương tác được tạo thành các siêu liên kết để phân phối HATEOAS.

Nhưng các hệ thống được tiếp cận dưới dạng tương tác trực tiếp mô hình tương tác và do đó cung cấp siêu liên kết trực tiếp. Ví dụ mẫu là http://www.masterkube.com/hateoas_technology.html có tại đây.

Hy vọng điều này sẽ hữu ích.

51

Có rất nhiều nhầm lẫn về điều này, bởi vì hầu hết các ứng dụng mà tự gọi mình còn lại không sử dụng hypermedia và đang không nghỉ ngơi chút nào.

Hypermedia là sự tổng quát của siêu văn bản cho nội dung không phải HTML. Bạn có thể nói siêu văn bản là một tập con của hypermedia. Hypermedia có thể là HTML trong trình duyệt, với tất cả các liên kết, nút và mọi thứ được hiển thị để bạn có thể duyệt một trang web hoặc tài liệu XML hoặc JSON có thể được phân tích cú pháp bởi ứng dụng khách tự động. con người sẽ làm với trình duyệt, nhấp vào các liên kết và nút được hiển thị.

HATEOAS nghĩa sự tương tác của một khách hàng với một ứng dụng còn lại phải được thúc đẩy bởi hypermedia, hoặc một cách đơn giản, khách hàng nên có được tất cả các URI cho mọi nguồn lực cần thiết bằng cách liên kết trong các đại diện của các nguồn lực tự sau đây, không phải bằng cách dựa vào thông tin ngoài băng, như các mẫu URI được đưa ra trong tài liệu, như nhiều API làm.

Đây là đơn giản hơn là bạn tưởng. Nó chỉ có nghĩa là sự tương tác giữa một ứng dụng khách và một ứng dụng REST phải giống hệt như một người duyệt một trang web. Lấy chính bản thân Stack Stack. Có người dùng, câu hỏi và câu trả lời. Khi bạn muốn xem danh sách các câu hỏi của mình, bạn không truy cập trang web tài liệu, nhận mẫu URI để liệt kê các câu hỏi của bạn, điền một trình giữ chỗ với id người dùng của bạn và dán nó vào brownser của bạn. Bạn chỉ cần nhấp vào liên kết đến tài liệu khác được mô tả dưới dạng danh sách câu hỏi và thậm chí bạn không quan tâm đến URI chính xác là gì. Đó là những gì HATEOAS có nghĩa là trong thực tế.

An hypermedia forma t xác định hợp đồng giữa khách hàng và máy chủ. Đó là định dạng dữ liệu được kích hoạt siêu liên kết mà bạn đang sử dụng cho một đại diện cụ thể của một tài nguyên trong một ứng dụng hypermedia. Ví dụ, nếu bạn có tài nguyên người dùng, bạn phải ghi lại chính xác những gì khách hàng mong đợi từ một đại diện của tài nguyên đó và cách phân tích cú pháp biểu diễn để trích xuất thông tin. Trước khi tương tác với API của bạn, khách hàng của bạn cần phải thực hiện một phân tích cú pháp để trích xuất các thông tin, họ cần phải biết những gì thuộc tính tài nguyên có và những gì họ có nghĩa là, những gì quan hệ liên kết họ nên mong đợi và những gì chuyển trạng thái có sẵn vv

hypermedia khiển là sự kết hợp của các phương pháp giao thức và các mối quan hệ liên kết trong một định dạng hypermedia mà nói với khách hàng những gì chuyển trạng thái có sẵn và làm thế nào để thực hiện chúng. Ví dụ, một câu hỏi có thể có một liên kết rel=post_answer hy vọng biểu diễn Trả lời làm trọng tải của một phương thức POST và sẽ tạo một tài nguyên Trả lời mới liên quan đến nó.

Khi bạn có một bộ định dạng siêu dữ liệu được xác định, bạn cần một loại phương tiện cụ thể tên miền để xác định chính xác định dạng hypermedia nào đang được sử dụng cho một tương tác cụ thể. Một loại phương tiện truyền thông chung như application/xml chỉ cho khách hàng biết cách phân tích cú pháp định dạng dữ liệu, nó không nói bất cứ điều gì về thông tin được phân tích bởi trình phân tích cú pháp. Ví dụ, giả sử một tài liệu có loại phương tiện truyền thông application/vnd.mycompany.user.v1+xml, máy khách biết đó là phiên bản 1.0 của tài nguyên người dùng ở định dạng XML.Nếu bạn thay đổi tài nguyên bằng cách thêm hoặc xóa thuộc tính, liên kết, v.v., bạn có thể thay đổi số phiên bản và ứng dụng khách sẽ không bị ngắt vì chúng có thể yêu cầu phiên bản chúng được triển khai bằng cách sử dụng tiêu đề Accept. Bạn cũng có thể cung cấp nhiều định dạng cho cùng một tài nguyên, như XML hoặc JSON và thậm chí là một biểu diễn khá dễ đọc trong HTML.

Khi bạn quấn mọi thứ lại với nhau - giao thức cơ bản, HTTP; các hợp đồng được định nghĩa bởi định dạng hypermedia và các loại phương tiện - bạn có Giao thức ứng dụng miền, là toàn bộ tập hợp tài nguyên và các chuyển đổi trạng thái có sẵn được quảng cáo bởi ứng dụng của bạn.

Không cần phải nói, 99% các API REST được gọi là bạn sẽ tìm thấy trên internet không tuân theo tất cả những điều này. Hầu hết trong số họ chỉ đơn giản là các API HTTP tuân theo một số ràng buộc REST, đôi khi vì chúng không thực sự cần tất cả chúng, đôi khi bởi vì đó là những gì các nhà phát triển nghĩ REST thực sự là.

+0

Vậy ứng dụng/vnd.mycompany.user.v1 + xml truyền đạt cho người dùng về thông tin đã được phân tích cú pháp như thế nào? – vishnu

+0

Không. Tài liệu mô tả 'application/vnd.mycompany.user.v1 + xml'. –

+0

Có phải HATEOAS nếu một ứng dụng chỉ cung cấp liên kết tới nguồn cấp phát được tạo bởi POST trong tiêu đề vị trí của phản hồi không? Hoặc thuật ngữ hypermedia chỉ bao gồm các liên kết được chứa bên trong cơ thể? – Marv

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