web-dev-qa-db-ja.com

RESTful Webサービスのカスタムメディアタイプ(アプリケーション/ vnd)を作成するにはどうすればよいですか?

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

そのために、私は自分のメディアタイプ(application/vnd[...]+xmlおよびapplication/vnd[...]+json)。

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

メディアタイプはメッセージフォーマットを定義するため、新しいメディアタイプに対応するためにXMLスキーマとJSONスキーマを追加する必要があります(RESTクライアントがメッセージの内容と何を送り返すかを知るため) 。

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

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

33
JohnDoDo

ゆうた

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

はい、メディアタイプは契約の一部です。 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週間近くかかります。
26
ioseb

3つの簡単なステップのRESTful Hypermedia APIをご覧ください

メディアタイプはデータタイプを記述する必要がありますが、XMLスキーマでは記述しません。 XMLスキーマを使用する場合は、 Looseバージョン管理戦略 を使用することを強くお勧めします。そうしないと、新しいメディアタイプが毎回必要になります。新しい要素または属性を追加する時間。

4
Tom Howard

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

いいえ、メディアタイプはデータのタイプ(アプリケーションなど)とサブタイプ(jsonなど)のみを定義します

完全に機能する新しいapplication/vndメディアタイプを作成するにはどうすればよいですか?そして、クライアントがそれを適切に使用できるように、あなたは何に注意する必要がありますか? ( http://www.ietf.org/rfc/rfc2046.txt?number=2046

独自のカスタムメディアサブタイプを作成することを決定し、それが広く使用されることを期待する場合は、IANAに登録する必要があります( http://www.iana.org/assignments/media-types )。これは、アウトオブバンド情報を潜在的なクライアントと共有するための標準的な方法です。

2
subodh