Spring Bootのリクエスト/レスポンス入門:HTTPメソッド・ヘッダー・ステータスをやさしく解説
生徒
「Spring Bootでリクエストやレスポンスを扱うとき、どんな仕組みになってるんですか?」
先生
「Spring Bootでは、HTTPメソッドやリクエストヘッダー、レスポンスステータスコードなどをコントローラーで簡単に扱えるようになっていますよ。」
生徒
「例えばGETとかPOSTの違いとかもあるんですよね?」
先生
「そうですね。それでは、HTTPメソッドの使い分けやヘッダー、ステータスコードの基本から順番に見ていきましょう!」
1. Spring BootとHTTPメソッドの関係
Spring Bootでは、@GetMappingや@PostMappingといったアノテーションを使って、HTTPリクエストを処理することができます。HTTPメソッドは、Webアプリケーションにおいてクライアントがサーバーに対してどのような操作をしたいのかを示す手段です。
例えば以下のようなHTTPメソッドがあります:
- GET: データの取得に使う
- POST: 新しいデータの作成や送信
- PUT: データの更新
- DELETE: データの削除
Spring Bootでは、それぞれに対応したアノテーションでリクエストを受け取れます。
@RestController
public class UserController {
@GetMapping("/user")
public String getUser() {
return "ユーザー情報を取得しました";
}
@PostMapping("/user")
public String createUser() {
return "ユーザーを作成しました";
}
}
2. リクエストヘッダーとレスポンスヘッダーとは?
HTTPリクエストやレスポンスには、ヘッダーという情報が含まれます。リクエストヘッダーは、ブラウザやアプリケーションがサーバーに送る追加情報です。レスポンスヘッダーは、サーバーがクライアントに返す追加情報です。
例えば、User-Agent(どんなブラウザか)、Content-Type(データ形式)、Accept(受け取り可能なデータ形式)などがよく使われます。
Spring Bootでは、リクエストヘッダーを@RequestHeaderで取得できます。
@GetMapping("/header-test")
public String headerTest(@RequestHeader("User-Agent") String userAgent) {
return "あなたのブラウザは:" + userAgent;
}
3. レスポンスのステータスコードの設定
レスポンスにはHTTPステータスコードを設定することで、クライアントに処理結果を伝えることができます。たとえば、200 OKや404 Not Found、500 Internal Server Errorなどが代表的です。
Spring BootではResponseEntityを使うことで、ステータスコードも細かく制御できます。
@GetMapping("/status")
public ResponseEntity<String> getStatus() {
return new ResponseEntity<>("正常に処理されました", HttpStatus.OK);
}
もしエラーやデータが見つからない場合は以下のように記述できます。
@GetMapping("/status404")
public ResponseEntity<String> getNotFound() {
return new ResponseEntity<>("データが見つかりません", HttpStatus.NOT_FOUND);
}
4. HTTPメソッドの使い分け例
リクエストの種類に応じて、HTTPメソッドを使い分けることで、Webサービスの設計が明確になります。例えばユーザー情報を操作するAPIでは以下のように設計するのが一般的です:
GET /users:ユーザー一覧の取得GET /users/{id}:特定ユーザーの取得POST /users:新規ユーザー作成PUT /users/{id}:ユーザー情報の更新DELETE /users/{id}:ユーザーの削除
このような設計は「REST API設計」と呼ばれ、Spring Bootでも非常によく使われる設計スタイルです。
5. JSON形式のリクエストとレスポンス
Spring Bootでは、JSON形式のリクエストやレスポンスを簡単に扱うことができます。クライアントからJSONデータを受け取り、Javaオブジェクトに変換するには、@RequestBodyを使います。
@PostMapping("/json")
public ResponseEntity<String> receiveJson(@RequestBody User user) {
return new ResponseEntity<>("名前:" + user.getName(), HttpStatus.OK);
}
このように書くだけで、Spring Bootが自動的にJSONをJavaオブジェクトに変換してくれます。逆にJavaオブジェクトをJSONにして返すことも自動で行われます。
6. 実行結果の例
上記の/header-testを実行すると、以下のようなレスポンスが返ってくる場合があります。
あなたのブラウザは:Mozilla/5.0 (Windows NT 10.0; Win64; x64)
7. Web開発で必須!HTTPの基礎知識を理解しよう
Spring BootでWebアプリケーションを作るうえで、HTTPのリクエスト・レスポンス・ヘッダー・ステータスコードの理解は欠かせません。これらをしっかり把握しておくことで、実践的なAPI開発がスムーズに進みます。特にRESTfulな設計やエラーハンドリングを行う際には、HTTPの基本をおさえることが重要です。