2012-01-01 4 views
4

オブジェクトを作成するRESTfulな方法は何ですか? /resources/URIでPOSTを使用し、レスポンスで新しく作成したリソースにURIを返すか、/ resources/id/URIでPUTを使用する必要がありますか? /resources/id /のGETリクエストは確実に404を返しますが、PUTも404を返しますか? 新しいオブジェクトの作成には両方の方法を使用する必要がありますか?新しいオブジェクトを作成するために、/ resources /または/ resources /のPUTリクエストでPOSTリクエストを使用する必要がありますか?

答えて

8

一般に、クライアント(したがってユーザ)がURIを定義するかどうかによって、どちらかまたは両方を使用します。クライアントがresources/にPOSTすると、サーバーはリソースのURIを判別します。クライアントがresources/{id}/にPUTする場合、クライアントはリソースのURIを決定しています。

ただし、リンク、状態、およびリソースの一部と見なされない他のアイテムが作成されている場合は例外です。これらの余分な「コンストラクタargs」は、一般的にPUTできません。リソース状態。代わりに、その場合はPOSTする必要があります。

作成のためにPOSTを使用しても、更新のためにPUTを公開したいことがあります。それはリソースに依存します。

PUTでyesを作成できない場合は、その状況で404を返す必要があります。

+0

私は混乱しています。なぜPUTを更新する必要がありますか? PUTを使用してリソース全体を更新する必要があります。すべてのリソースを再度保存するのは不便です(データが大量になる可能性があります)。リソース/ {id}/{field}には意味があるかもしれませんが、POSTには何がありますか?私は、POSTの更新とPUTの置き換え(そのため、リソースが空の場合は、それが作成される)ということを知っています。 –

+0

はい、PUTを使用して更新するには、リソース全体が必要です。非効率的なように見えるかもしれませんが、RESTアーキテクチャー・スタイルを使用して構築されたアプリケーションを大規模なデプロイメントに拡張するための重要な要素です。リソースのサイズのバランスを取るか、代わりにPATCHメソッドを使用する必要があります。 PUTは置き換えられます。これは規約にとどまらず、規約に従います。 POSTは「他のすべて」を行い、頻繁に更新に使用されます。 – fumanchu

+0

POSTを使ってリソースを更新できるのであれば、私はまだPUTを許可するべきではありません。 –

関連する問題