2012-04-09 3 views
2

独自のカスタムメディアタイプのフォーマット(application/vnd.myapp + xml)を作成する場合、クライアントはボディコンテンツを送信する際にカスタムメディアタイプで行う必要がありますか?RESTサービスを設計するときにリクエストの本文コンテンツタイプで使用されるカスタムメディアタイプ?

たとえば、注文の表現をURIにプットします。コンテンツはapplication/vnd.myapp + xml、またはxmlだけでなければなりません。なぜならクライアントはリンクのようなハイパーメディアコントロールを含んでいないからです。

サーバーは、ユーザーがそれを受け入れるならば、常にカスタムメディアタイプで応答しますが、クライアントは要求本体でそれを使用する必要がありますか?

+0

別の言い方をすると - クライアントが私たちのドメインアプリケーションプロトコルに同意すると、カスタムドメイン固有のハイパーメディアを通信手段として使用することが理解されているため、クライアントとサーバー間を行き来する必要があります。 – pbo

答えて

3

クライアントは、サーバがGET応答で返信するのと同じメディアタイプを使用してサーバに(PUTやPOSTなどを介して)データを送信する必要はありません。受信できるメディアの種類と返される種類を決定するのはサービス次第です。もちろん、同じリソースに対して両方向の複数のメディアタイプをサポートするように実装することもできます。 (たとえば アプリケーション/ vnd.myapp + XML)独自のカスタムメディアタイプのフォーマットを作成する場合は、本体 コンテンツを送信する際に

+0

私は残りのサービスでカスタムメディアタイプ(HATEOAS)を使用する理由の一部は、2つの間の契約を表すことだと思った。 – pbo

+0

まあ、( "application/json"のような一般的なものとは対照的に)カスタムメディアタイプは表現の構文と意味を定義し、それはクライアントとサーバーの間の契約の一部です。そして、サーバは、それが生成するものと同じメディアタイプの表現だけを消費すると決定することができる。しかし、より柔軟にすることを選択することができます。ブラウザはウェブフォームを「アプリケーション/ x-www-form-urlencoded」としてPOSTすることができるが、カスタムメディアタイプ(例えば、"application/vnd.mycompany.foo + json" "application/vnd.mycompany.foo + xml")をJSONまたはXML中心のクライアントから削除します。 –

+0

理にかなって、私はそうすべきだと思っています。トピックに関するいくつかの声を聞きたいですか? – pbo

2

、クライアントは、カスタムメディアタイプで行う必要がありますか?

いいえ、たとえばHTMLを使用します。 HTMLはtext/plain、application/x-www-form-urlencodedまたはmultipart/form-dataでデータを送信できますが、メディアの種類は異なります。これらのサポートされているタイプはすべて、HTML仕様書自体で定義されており、フォーム定義の内部で提供することができます。だから、それはあなたが(すなわちENCTYPE HTML.FORMで)例えば

書き込みセマンティクスを持つ2つのJSON形式があり、この制御因子をクライアントに座標どのようにあなた次第です:

コレクション+ JSON:http://amundsen.com/media-types/collection/format/

明示的データフォーマットを送信し、アプリケーション/ vnd.collection + JSONは

Collection.next + JSONで定義する:http://code.ge/media-types/collection-next-json/

H上、さらに同じサポート"enctype"属性のサポートとサービス実装者は、データ提出のために望ましいメディアタイプを指定することができます。

ユーザー がそれを受け入れる場合は、必ずカスタムメディアタイプで応答するサーバー(これはそれが必要)が、クライアントが リクエストボディでそれを使用する必要がありますか?

上記の回答を参照してください。

関連する問題