http verbs
彼の定義が間違っているので、受け入れられた答えに何かを追加したかっただけです。それらはすべて従うべき「すべき」仕様を持っており、仕様にhttp verbs
基づいて複数で作成/更新/削除することができます。
W3によるRFC2616の重要な部分のいくつかを強調します。
PUT
私の意見では、それを取り巻く混乱が最も大きいので、最初に説明します。
PUT is used for both create/update PUT updates by completely replacing the resource on the server with the resource sent in the request
例えば
あなたは私のAPIにこの呼び出しをします
PUT /api/person
{
Name: John,
email: jdoe@hra.com
}
私のサーバーはこのリソースをサーバー上に置いています
{
Name: Jane,
email: jdoe@hra.com
}
これで、既存のリソースはあなたが送信したものに完全に置き換えられ、これが私のサーバーにあるものです。
{
Name: John,
email: jdoe@hra.com
}
PUT
したがって、本文でのみメールを送信する場合
PUT /api/person
{
email: jdoe@hra.com
}
マイサーバーがエンティティを完全に置き換えます
{
Name: Jane,
email: jdoe@hra.com
}
と
{
email: jdoe@hra.com
}
そして、名前はなくなります。部分的な更新はのためですが、とにかくPATCH
私はそれのために使用します。POST
One of the main reasons why we create/update with put is because it is idempotent.
これは単なる空想用語であり、その基本的な定義は、複数の同一のリクエストが1つのリクエストに対して同じであるということです。
例
オリジンサーバーがそのファイルを見つけられない場合、PUT
ファイルを作成するとします。api/file
ファイルが見つかった場合は、古いファイルを私が送信したファイルに完全に置き換えます。これにより、1つのファイルが作成および更新されることが保証されます。ファイルが存在せずPUT
、5回呼び出すと、最初にファイルが作成され、残りの4回は、送信したファイルに置き換えられます。5回呼び出しPOST
て作成すると、5つのファイルが作成されます。
You PUT to that exact URI. If you don't you have to send a 301 (Moved Permanently) to the user and allow then make a choice whether or not to redirect the request. Most times the server you PUT to usually hosts the resource and takes care of updating it
これらがPUTを使用する際の重要なポイントです
POST
に関する限り
You can also create/update and then some...
上で述べたように、いくつかの重要な違いがあります。
- 投稿はより一般的です。どんな風に?他のいくつかの例には、他のプロトコルへのゲートウェイが含まれます。応答を取得して、途中でデータハンドラーに送信したり、ある種の機能を拡張したりできます。
- Postには、「正確なURIまたは通知」の制限はありません。たとえば
POST
、既存のコレクションにリソースを追加して、それを保存する場所を決定できます。
では、Delete
どうして私だけじゃないのPOST
?
の場合、応答の送信時にリソースを削除するか、アクセスできない場所にリソースを移動しない限りDELETE
、サーバーは正常に応答しないはずです。
なぜそれが重要なのですか?電話をかけDELETE
たが、リソースが削除される前に「承認」を通過する必要がある場合はどうなりますか?削除を拒否できる場合、正常なエラーコードを送信することはできません。また、これに関する基本的な仕様に従えば、呼び出し元を混乱させることになります。ほんの一例ですが、他にもたくさん考えられると思います。
コモンをいつ使用するかについての主要なポイントのいくつかを強調しましたHttp verbs