35

私は今RESTで遊んでいて、すべての概念を正しくするためにHATEOASを適切に実装していると思いました。

application/vnd[...]+xmlそのために、独自のメディア タイプ (および)を作成したいと考えていますapplication/vnd[...]+json

最初の質問:メディア タイプは、サーバーとクライアント間の契約を定義しますか?

メディア タイプによってメッセージ形式が定義されるため、新しいメディア タイプに合わせて XML スキーマと JSON スキーマを追加する必要があります (これにより、REST クライアントはメッセージに何が入ってきて、何を送り返すかを知ることができます)。

私はウェブでいくつかの調査を行いましたが、これを行う方法の詳細が欠落しています。網羅的な仕様/ドキュメントを作成するだけですか、それとも実装するための技術的な手順がいくつかありますか? (IANAに登録しなくてもいいですよね?)

完全に機能する新しいapplication/vndメディア タイプを作成するにはどうすればよいですか? また、クライアントが適切に使用できるようにするには、何に注意する必要がありますか?

4

3 に答える 3

26

@ジョンドド

最初の質問: メディア タイプは、サーバーとクライアント間の契約を定義しますか?

はい、メディアの種類は契約の一部です。REST API のコントラクトは、SOAP (つまり WSDL) とは異なり静的ではありません。コントラクトは、基礎となるプロトコル (HTTP など)、URI、およびメディア タイプの組み合わせによって定義されます (複数のメディア タイプを一緒に使用することは禁止されていません)。メディア タイプは、データ モデル、処理モデル、ハイパーメディア コントロール (注釈付きリンク、入力フォームなど) を定義し、リンク関係、要素名、ID、クラス名などによって記述される追加のアプリケーション固有の情報を含めるためのサポートを定義します。

メディア タイプによってメッセージ フォーマットが定義されるため、新しいメディア タイプに合わせて XML スキーマと JSON スキーマを追加する必要があります (これにより、REST クライアントは、メッセージに何が入ってきて、何を送り返すかを知ることができます)。

ドキュメントの構造をカバーする一般的なスキーマを定義するだけで済みます。特定のメッセージに対して個別のスキーマを定義する必要はありません。メッセージは、メディア タイプによって定義された構造に足を踏み入れる必要があります。

新しい - 完全に機能する - application/vnd メディア タイプを作成するにはどうすればよいですか? また、クライアントが適切に使用できるようにするには、何に注意する必要がありますか?

  1. それを記述します (つまり、書き込み形式の指定)。
  2. IANA に登録: http://www.iana.org/cgi-bin/mediatypes.pl vnd.* ツリーの下にメディア タイプを登録するには、登録に 1 週​​間近くかかります。
于 2013-02-12T15:19:59.710 に答える
4

3 つの簡単なステップによる RESTful ハイパーメディア API をご覧ください。

あなたのメディアタイプはデータ型を説明する必要がありますが、XML スキーマではそうしません。XML スキーマを使用する場合は、Loose versioning 戦略を使用することを強くお勧めします。そうしないと、新しい要素または属性を追加するたびに、新しいメディア タイプが必要になります。

于 2013-02-04T21:57:41.660 に答える