2009-06-11 17 views
0

私はREST-ful Webサービスを開発しており、HTTP PUTメソッドについて質問があります。HTTP PUTの代替ボディ

私は、人々がアプリケーション/フォームデータ要求本文を使用してコンテンツを提出できるようにしたいと考えています。ただし、デフォルトの応答はapplication/xmlになります。

これは受け入れ可能ですか?

エバート

答えて

2

コンテンツタイプは、単一の要求の範囲内でのみ重要です。彼らが行うのは、送信されているコンテンツの形式を記述することだけです。

お客様のWebサービスは、提供可能なクライアント要求に対して最も受け入れやすい応答を提供する必要があります。クライアント要求には、受け入れ可能なコンテンツタイプを記述するAcceptヘッダーを含める必要があります。あなたのサービスがこのヘッダー内のコンテンツタイプのいずれかを提供することができない場合は、あなたのクライアントGETリクエストがAcceptヘッダーでapplication/xmlを含めるならば、関係なく、任意のPUTの、application/xmlで応答する結構です、あなたの状況では406 Not Acceptable

を返します要求されたリソースに対して行われた要求。

EDIT:

406 Not Acceptableためstatus code definitionは、以下とメモを含む:

注:HTTP/1.1サーバーがで送信受け入れヘッダに従って許容される ない応答を返すことが許可されています リクエスト場合によっては、 406の応答を送信するよりも好ましい場合もあります。利用者エージェントは、 のヘッダを検査して、それが受け入れ可能かどうかを判断することが奨励される。

したがって、いつでもapplication/xmlを返すことができます。

0
任意スコープ情報がURIに含まれていることを確認し、HTTPメッセージエンベロープがないことを確認し、正しいHTTPメソッドを使用する(HEADのGET、PUT、DELETEまたはPOST)アクションのためべき

RESTfulなサービス別のエンベロープ、つまりSOAPを含んでいません。

Roy Fieldings 2000 Ph.D. dissertation: Architectural Styles and the Design of Network-Based Software Architecturesは、RESTの基礎を形成します。

+0

興味深い記事が、それは私の質問に答えていない... 例: 私は/記事/ firstpostに新しい記事をPUT、私は、アプリケーション/ xmlまたはアプリケーションのいずれかのコンテンツタイプを使用するオプションを取得/ form-data。私は後で選ぶ。 私は記事でGETを行い、application/xml表現を受け取りました。これは問題ありませんか? – Evert

+0

残念ながら、自分自身をRESTするのは初めてですが、理解しているように、これは実際にXMLがクライアントによってどのように消費されるかによって異なります。メッセージエンティティは、クライアントにとって最も適切なデータ形式でなければならず、クライアントとサービスを結合するので、問題の特定の解析を必要としません。ここでこれについてさらに議論する記事があります。 http://www.peej.co.uk/articles/rest-data-formats.html。アプリケーション/ xmlがREST原則に従わない可能性があると思われるあなたの理由は何ですか? –