2012-11-14 15 views
16

私は現在構築中のWebAPIのクライアント実装を書こうとしています。 APIは既にHATEOASを採用しているので、私はそれに応じてクライアントを書いています。私はRestSharpをクライアントのベースとして使用しています。HATEOAS関連 - その他の規格はありますか?

クライアントは、それがでリクエストを発射し、他の利用可能なリソースのURIのセットを渡され、建設時間(「https://myapi/start 『)のAPIベースURL渡される - 承認(』 https://myapi/authorizeを」)とアクセストークンを要求します( "https://myapi/tokens")、API上の保護されたリソースを呼び出す権限を与えます。

質問は返されたハイパーメディアのrel = ""要件のためにまだ作成された標準がありますか?

答えて

10

私はHypertext Application Language(HAL)がドラフト標準であり、ハイパーメディア間のこれらのリンクを標準化しようと考えています。

これはXMLがあるHAL仕様が「HREF」はウェブのリンク仕様(RFC 5988)で定義された「ターゲットIRI」に準拠した強制ドラフトJSON仕様http://tools.ietf.org/html/draft-kelly-json-hal-03

へのリンク

ですC#を使用してHALの実装はここhttps://github.com/tavis-software

上記と同じGitHubのリポジトリもRFC 5988

4

このIETF提案標準RFC5988 documentは、さまざまな種類のリンク関係と提案されている用途を記述しています。 HTTP Linkヘッダー仕様に重点を置いていますが、他のリンク関係タイプの説明も含まれています。いくつかの(ほとんどの)RFCのように、それを読むことは、あなたが始めたときよりもあなたを混乱させることになりますが、長期的にはその努力の価値があります。それは二重引用符の間にあなたの質問の間に置く答えですか?おそらく、しかし、少なくともあなたの選択を導くためのいくつかの考えを得るでしょう。

+0

私は可能な限りRFCを避けようとしています;ただ冗談ですが、私は喜んでいますが、私は答えよりも多くの質問で常に唯一のものではありません。 – Jammer

2

の例.NET実装が含まれているHALは非常にint型と思われます確かに耳を傾ける。

このトピックまたはHATEOASを調べている他の人にとって、HALブラウザは必須です。下のリンクからチェックアウト:別の答えで指摘されているように、

The Hal Browser on Heroku

8

Web Linking spec, RFC5988、リンク関係のいくつかの異なったタイプを定義します。しかし、IANAにリンク関係レジストリを作成し、さらにリンク関係の登録を許可するよう指示します。そのレジストリは で公開されており、iana.org/assignments/link-relationsで公開されており、新しい関係が登録されると更新されます。 HTTP APIの中

一般的に使用される関係は、次のとおりです

  • start(バックAPIの開始点までのすべてのリソースからポイント)Twitterのユーザーページから、たとえば、コレクションから項目へ
  • item(ポイントを、つぶやき)item
  • collection(逆)へ
  • previous(これらの次の4つがページ分割資源、例えばのためのものですコレクションや複数ページの記事)
  • next
  • first
  • last
  • create-formコレクションから新しいコレクションアイテムを作成する方法について説明し、リソースへの(ポイント、例えば「新しい項目の」HTMLやXFormsフォーム)、例えば、編集ツイートボタン)

場合、そのアイテムを編集するためのフォームの項目から

  • edit-form(点あなたの希望する関係はであり、でない場合、関係はURIでなければなりません。さらに、APIクライアントがその関係のドキュメントを参照できるように、そのURIを参照可能なhttp URLとすることをお勧めします。 "http://www.example.com/link-relations#tweets"通常、APIの開始点は、各コレクションに含まれるリソースの種類を説明するカスタムリンクリレーションを持つコレクションのリストになります。

  • 関連する問題