PUT
リクエストは多くの結果をもたらす可能性があり、どのステータスコードがそれぞれに最適なのか不思議でした。PUTのHTTPステータスコード
は、私は新しいリソースを作成したいと言うので、私はそのような何か:
PUT http://example.com/resources/resource-1
をまた、新しいリソースが作成されているので、私はHTTP 201
になるだろう。
は、今私は、このリソースを更新したいので、私は新しい内容で、同じ要求を行います。
PUT http://example.com/resources/resource-1
とリソースが更新されているので、私は、HTTP 200
またはHTTP 204
を取得します。しかし、同じ内容でもう一度このリクエストを送信すればどうなりますか?何も更新されていない場合でも、サーバーはHTTP 200
またはHTTP 204
を返しますか?私は、HTTP 200
とHTTP 204
は、リクエストが正常に処理されたことを意味するだけで、データが変更されない場合でもリクエストは正常に処理されることができます。しかし、リクエストが正常に処理されたが、サーバ側で何も変更されていないことをクライアントに伝える方法はありますか?それがあれば、PUT
リクエストに使用する必要がありますか? PUT
が冪等である場合、(この処理中にエラーが発生しない限り)サーバー側の実際の処理に応じて異なるステータスを返す必要がありますか?
リソースが201の最初のPUT要求を返したが、それ以降の要求で200または204を返した場合、偶発性(PUTに必要)に違反しないだろうか? – Ray
@Rayいいえ。冪等の理由は、サーバー上の結果、またはより具体的には応答メッセージの内容ではなく、要求URLによって識別されるリソースのバイト内容に関するものです。サーバー上の結果は、同じリソースの連続したPUTで変更されません。 (例えば、リソースの状態は要求間で変化するかもしれません) "_"(httpのような) ://www.restapitutorial.com/lessons/idempotency.html)。 – CodeCaster
ああ...明確化のおかげで - 完全な意味がある。 – Ray