DELETEメソッド解説|DELETEリクエストを送信する方法
DELETEメソッドはデータ削除用のHTTPメソッドとして、Webアプリ開発中に利用されることが必要です。本文ではDELETEメソッドの基本情報を詳しく解説した上、非常に使いやすいAPIクライアントを使って、DELETEリクエストを送信する方法を皆さんに紹介します。
DELETEメソッドはデータ削除用のHTTPメソッドとして、Webアプリ開発中に利用されることが必要です。本文ではDELETEメソッドの基本情報を詳しく解説した上、非常に使いやすいAPIクライアントを使って、DELETEリクエストを送信する方法を皆さんに紹介します。
DELETEメソッドの基本情報
それでは、本記事では、まずはDELETEメソッドの基本情報を皆さんに紹介していきたいと思います。
DELETEメソッドとは
DELETEメソッドとは、HTTPプロトコルの1つのメソッドで、サーバー上のリソースを削除するために使われます。クライアントがDELETEメソッドでリクエストを送信すると、サーバーはそのURIで指定されたリソースを削除します。
DELETEメソッドの特徴
DELETEメソッドはRESTfulなAPI設計において重要な役割を果たしています。DELETEメソッドは、リソースの削除を安全に行うために推奨されているHTTPメソッドになります。次のような特徴があります:
- サーバー上の特定のリソースを削除可能
- レスポンスの内容を返す必要はない
- 成功した場合は200(OK)や204(No Content)を返すのが一般的
- 失敗した場合は404(Not Found)や403(Forbidden)などのエラーコードを返す
なぜDELETEメソッドを見るのが少ない感じがある?
DELETEメソッドが実際にはあまり利用されていない大きな原因の1つは、多くのAPIがRESTの設計規範に厳密には遵守していないことにあると言えます。例えば、多くのAPIはREST原則から外れたAPI設計をしている場合が多く、データ変更(添削や更新など)に関する全ての操作もPOSTメソッドによって実現されています。
また、リソースを削除すると、復元することが難しいので、セキュリティ面での考慮のため、リソースを削除することより、リソースを無効化にした方が安全になるので、DELETEメソッドの使用頻度がさらに下がります。
このように、実用性を重視するためにRESTの原則が守られていないことが多いとはいえ、RESTの設計規範にきちんと遵守すると、APIの数が多くなっても、混乱せず効率的に管理できるのでしょう。
DELETEメソッドのデータ渡し方とHTTPボディ
それでは、DELETEメソッドを特定のリソースを削除するために、データ(パラメータ)の渡し方は何でしょうか?DELETE対象のリソースを特定するために、パスとクエリパラメータでデータを渡すことも可能ですが、HTTPボディでデータを渡すことも可能です。具体的にどのような手段でデータを渡すのは、それぞれのAPI仕様書を確認する必要があります。
DELETEメソッドでHTTPボディを使用する場合と使用しない場合のコードサンプルは以下のようになります。
ボディを使用しない場合
DELETEメソッドで次のように、URIのパスに対象リソースを指定し、HTTPボディを全く使用しないことが許可されます。
DELETE /users/1234 HTTP/1.1
Host: example.com
ボディを使用する場合
URIのパスには基本的な対象(DELETE /users)を指定して、ボディに条件を指定して、条件にマッチする複数ユーザーを削除することも実現できます。
DELETE /users HTTP/1.1
Host: example.com
Content-Type: application/json
{
"lastLoginDate": {
"$lt": "2022-01-01"
}
}
また、DELETEリクエストによる削除操作に追加情報を提供したい場合は、次のように、それらの情報をHTTPボディに追加することもできます。
DELETE /users/1234 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"deletedBy": "admin",
"reason": "Spam user"
}
ApidogでDELETEリクエストを簡単に送信!
それでは、もしDELETEリクエストを送信してリソースのデータを削除したい場合、どうやって実装すればいいですか?この部分では、日本語対応API管理ツールのApidogで1クリックだけでDELETEリクエストを送信できる方法を皆さんに紹介します。HTTPボディの使用を問わず、Apidogは全てのタイプのDELETEリクエストを直感的な操作で送信できます。
Bodyを使用しないDELETEリクエストの送信
ApidogでDELETEリクエストを送信して、サーバー上のリソースを削除する場合は、次の画像のように、パスパラメータかクエリパラメータを利用して、削除対象を指定できます。
Bodyを使用するDELETEリクエストの送信
また、Bodyを利用して、削除操作に情報を追加したり、削除対象を条件で複数指定したりする必要がある場合、「Body」タブに切り替えて、適切なデータフォーマットを選択して、データを記入することもできます。