2012-11-14 67 views
16

我剛剛開始爲我目前正在構建的WebAPI編寫客戶端實現。 API已經使用HATEOAS,所以我正在寫客戶端。我使用RestSharp作爲客戶端的基礎。HATEOAS Rel - 任何標準呢?

客戶端在建設時通過api基礎url(「https://myapi/start」),它在此處發出請求,然後通過一組uris訪問其他可用資源 - 授權(「https://myapi/authorize」)並請求訪問令牌「https://myapi/tokens」)授權它調用api上的安全資源。

的問題是有沒有什麼標準制定的又爲相對=「」在返回的超媒體的要求?

回答

4

這IETF提出的標準RFC5988 document介紹了不同類型的鏈接關係,並提出用途。它的焦點在於HTTP鏈接頭部規範,但它包括對其他鏈接關係類型的討論。像一些(大多數?)RFC一樣,閱讀它可能會讓你比開始時更困惑,但它的長期價值是值得的。它會回答你在問題中的雙引號之間的內容嗎?可能不會,但至少你會有一些想法來指導你的選擇。

+0

我儘量避免RFC;)只是在開玩笑,儘管我很高興我不是唯一一個總是帶着更多問題而不是答案的人。 – Jammer

2

HAL似乎很INT真的很驚人。

爲別人尋找到這個話題或HATEOAS的HAL瀏覽器是必須的。看看下面的鏈接:

The Hal Browser on Heroku

8

Web Linking spec, RFC5988,如已在另一個答案已經指出,定義了一些不同類型的鏈接關係的。但它也指示IANA創建鏈接關係註冊表並允許進一步鏈接關係註冊。該註冊表是公共鏈接關係的確切列表,可在iana.org/assignments/link-relations並且將在註冊新關係時更新。

在HTTP API的

常用關係包括:

  • start從集合(從每一個資源回API起點站)
  • item(指向一個項目,例如從Twitter用戶頁面到鳴叫)
  • collection(的item反向)
  • previous(這些接下來的四個是分頁資源,例如收藏還是多頁的文章)
  • next
  • first
  • last
  • create-form(一個描述如何創建新的收藏項目,例如「新項目」 HTML或XForms表單的資源點從集合)
  • edit-form(點從一個形式的項用於編輯該項目,例如一個編輯資料Tweet按鈕)

如果您希望的關係是而不是被該列表上的任何內容所覆蓋,您的關係必須是URI。此外,建議將URI設爲可控的域中的可忽略http URL,以便API客戶端可以查找該關係的文檔,例如, 「HTTP://www.example.com/link-relations#tweets」。通常,您的API起始點將是一個集合列表,每個集合都有一個自定義鏈接關係,用於描述每個集合包含的資源類型。