Java ServletのHttpServletのdoDeleteメソッド完全ガイド!初心者でもわかるDELETEリクエストの使い方と実装方法
生徒
「Servletでデータを削除するにはどうすればいいですか?」
先生
「それにはDELETEリクエストを使います。JavaのHttpServletクラスではdoDelete()メソッドを使って処理できますよ。」
生徒
「GETやPOSTとは何が違うんですか?」
先生
「それではdoDelete()メソッドの基本と、DELETEリクエストの使い方を一緒に見ていきましょう。」
1. doDeleteメソッドとは
doDelete()メソッドは、JavaのHttpServletクラスに用意されているメソッドの一つで、HTTPのDELETEリクエストを処理するために使います。
DELETEは、クライアントから指定されたリソースを削除する目的で使用されるHTTPメソッドで、REST APIでは標準的に使われています。
このdoDelete()をオーバーライドすることで、URLパラメータなどをもとに対象データを特定し、削除処理を実装できます。
2. DELETEとPOST・PUTの違い
POSTやPUTと同様に、DELETEもサーバー上のデータを操作するリクエストですが、目的が異なります。
- POST:新しいリソースの作成や一部更新
- PUT:既存リソースの完全な上書き
- DELETE:指定されたリソースの削除
このように、それぞれ用途が明確に分かれているため、適切なメソッドを選ぶことでAPI設計が整理され、保守性も向上します。
3. doDeleteの基本的な実装方法
ServletでdoDelete()メソッドを使ってリクエストを処理する方法は以下の通りです。
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class DeleteServlet extends HttpServlet {
@Override
protected void doDelete(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String id = request.getParameter("id");
if (id == null) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
response.getWriter().write("IDが指定されていません。");
return;
}
// ここで削除処理を実行する(例:データベースから削除)
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().write("ID: " + id + " のデータを削除しました。");
}
}
この例では、クエリパラメータからIDを取得し、それを使って削除処理を行う流れになっています。
4. DELETEリクエストの送信方法
ブラウザから直接DELETEリクエストを送ることはできませんが、curlやPostmanなどのツールを使えば簡単にテストできます。
curl -X DELETE "http://localhost:8080/api/delete?id=123"
このようにして、ServletのdoDelete()メソッドが正しく動作しているかを確認できます。
5. パスパラメータと連携した削除処理
より実用的なREST API設計では、IDをクエリパラメータではなくパスで受け取ることが一般的です。例えば、/user/123のようなURLです。
その場合は、HttpServletRequestのgetPathInfo()メソッドを使ってパスからIDを取り出します。
String path = request.getPathInfo(); // /123
String id = path != null ? path.substring(1) : null;
この方法を使えば、より直感的でRESTfulなURL設計が可能になります。
6. doDeleteでのエラーハンドリング
doDelete()を実装する際は、適切なエラーハンドリングも重要です。
SC_BAD_REQUEST(400):リクエストに必要な情報がないSC_NOT_FOUND(404):削除対象のデータが見つからないSC_INTERNAL_SERVER_ERROR(500):削除処理中にサーバーエラーが発生
レスポンスの内容とステータスコードを丁寧に設計することで、APIの信頼性が向上します。
7. doDeleteが活躍するユースケース
doDelete()メソッドは、次のような場面で利用されます。
- ユーザーアカウントの削除
- 投稿・コメントの削除
- 設定やファイルの削除
- 管理画面での一括削除操作
特にRESTful APIの設計では、DELETEは必須のメソッドとして活用されます。
8. セキュリティと認可処理
doDelete()でリソースを削除する場合、誤操作や不正アクセスを防ぐためのセキュリティ対策が欠かせません。
削除前に、対象リソースの所有者を確認したり、認可チェック(ログインユーザーの確認)を行うことが重要です。
また、ログ記録を残しておけば、トラブル発生時の原因調査にも役立ちます。