2012-11-14 34 views
16

Tôi chỉ mới bắt đầu viết triển khai ứng dụng khách cho một WebAPI mà tôi hiện đang xây dựng. API đã sử dụng HATEOAS vì vậy tôi đang viết ứng dụng khách cho phù hợp. Tôi đang sử dụng RestSharp làm cơ sở cho khách hàng.HATEOAS Rel - Bất kỳ tiêu chuẩn nào?

Khách hàng được chuyển địa chỉ api cơ sở tại thời điểm xây dựng ("https://myapi/start") mà nó kích hoạt yêu cầu và sau đó được chuyển một bộ uris cho các tài nguyên có sẵn khác - ủy quyền ("https://myapi/authorize") và yêu cầu mã thông báo truy cập ("https://myapi/tokens") để ủy quyền cho nó gọi vào tài nguyên bảo mật trên api.

Câu hỏi đặt ra là có bất kỳ tiêu chuẩn nào được nêu ra cho các yêu cầu rel = "" trong hypermedia được trả về không?

Trả lời

10

Tôi tin rằng Hypertext Application Language (HAL) là một dự thảo tiêu chuẩn - cố gắng chuẩn hóa các liên kết này giữa hypermedia.

Đây là một liên kết đến dự thảo JSON đặc điểm kỹ thuật http://tools.ietf.org/html/draft-kelly-json-hal-03

Đặc tả HAL thực thi các "href" phù hợp với "Target IRI" được định nghĩa trong đặc tả Web liên kết (RFC 5988)

Có một XML thực hiện HAL sử dụng C# đây https://github.com/tavis-software

các kho GitHub cùng trên cũng chứa một ví dụ Net thực hiện RFC 5988.

4

Tiêu chuẩn IETF được đề xuất RFC5988 document mô tả các loại mối quan hệ liên kết và tập quán được đề xuất khác nhau. Trọng tâm của nó là đặc tả tiêu đề của Liên kết HTTP nhưng nó bao gồm một cuộc thảo luận về các loại quan hệ liên kết khác. Giống như một số (nhất?) RFC, đọc nó có thể khiến bạn bối rối hơn khi bạn bắt đầu nhưng nó có giá trị nỗ lực trong thời gian dài. Nó sẽ trả lời những gì để đặt giữa các dấu ngoặc kép trong câu hỏi của bạn? Có lẽ không, nhưng ít nhất bạn sẽ nhận được một số suy nghĩ để hướng dẫn lựa chọn của bạn.

+0

Tôi cố gắng tránh RFC nếu có thể;) Chỉ đùa thôi, mặc dù tôi rất vui vì tôi không phải là người duy nhất luôn có nhiều câu hỏi hơn câu trả lời. – Jammer

2

HAL có vẻ rất int eresting thực sự.

Đối với bất kỳ ai khác xem chủ đề này hoặc HATEOAS, trình duyệt HAL là điều bắt buộc. Kiểm tra tại liên kết dưới đây:

The Hal Browser on Heroku

8

Các Web Linking spec, RFC5988, như đã được chỉ ra trong câu trả lời khác, định nghĩa một số loại khác nhau của các mối quan hệ liên kết. Nhưng nó cũng chỉ thị IANA để tạo ra một đăng ký quan hệ liên kết và cho phép đăng ký quan hệ liên kết thêm. Đăng ký đó, là danh sách quan hệ liên kết công khai cuối cùng, có sẵn tại iana.org/assignments/link-relations và sẽ được cập nhật khi các mối quan hệ mới được đăng ký.

quan hệ Thường được sử dụng trong các API HTTP bao gồm:

  • start (điểm từ mọi nguồn lực trở lại điểm bắt đầu API)
  • item (điểm từ một bộ sưu tập đến một mục, ví dụ như từ một trang người dùng Twitter tweet)
  • collection (đảo ngược item)
  • previous (bốn trang tiếp theo dành cho tài nguyên được phân trang, ví dụ:bộ sưu tập hoặc các sản phẩm đa-page)
  • next
  • first
  • last
  • create-form (điểm từ một bộ sưu tập tới một tài nguyên mô tả cách tạo chi tiết bộ sưu tập mới, ví dụ như một 'New Item' HTML hoặc XForms tạo)
  • edit-form (điểm từ một mục mẫu để chỉnh sửa mục đó, ví dụ như một nút Edit Tweet)

Nếu quan hệ bạn muốn là không phải được bao hàm bởi bất kỳ điều gì trong danh sách đó, mối quan hệ của bạn phải là URI. Hơn nữa, chúng tôi khuyên bạn nên đặt URI đó thành URL http không thể chấp nhận được tại một miền thuộc quyền kiểm soát của bạn để các ứng dụng API có thể tra cứu tài liệu về mối quan hệ, ví dụ: "http: //www.example.com/link-relations#tweets". Thông thường, điểm bắt đầu API của bạn sẽ là danh sách các bộ sưu tập, mỗi bộ có quan hệ liên kết tùy chỉnh mô tả loại tài nguyên mà mỗi bộ sưu tập chứa.

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