リクエストパラメータを受け取る際の備忘録。
SpringBootでリクエストパラメータを受け取るには、以下の3つのアノテーションを使い分ける。
- パスパラメータ
- クエリパラメータ
- リクエストボディ
それぞれの使い方を以下にまとめる。
パスパラメータ
@PathVariable
クエリパラメータ
@RequestParam
リクエストボディ
@RequestBody
Spring Boot Version
3.1.1
用途、具体例
@PathVariable
URLの一部をメソッドの引数として受け取るために使用する。
https://example.com/products/{productId}
@GetMapping("/products/{productId}")
public Product getProductDetails(@PathVariable Long productId) {
// productIdを使用して製品詳細を取得する処理...
}
@RequestParam
クエリパラメータやフォームデータをコントローラメソッドの引数として受け取るために使用される。
@GetMapping("/products")
public Product getProducts(@RequestParam String param1, @RequestParam String param2) {
// クエリパラメータの値を使用して処理...
}
@PostMapping("/products")
public String createProduct(@RequestParam String name, @RequestParam String authorName) {
// フォームデータを使用して処理...
}
https://example.com/products?param1=value1¶m2=value2のようなURLで、param1やparam2のクエリパラメータの値を取得する際に使用する。
@RequestBody
HTTPリクエストのボディ部分からデータを受け取るために使用される。JSON形式で受け取るのが一般的である。
@PostMapping("/products")
public String createProduct(@RequestBody ProductForm productFormData) {
// productFormDataを使用して処理...
}
@Data
public class ProductForm {
/**
* 製品名
*/
private String name;
/**
* 製品著者
*/
private String authorName;
}
@RequestBodyを使うと以下の利点などがある。
- JSONなどの形式で送信されるデータを受け取り、Javaオブジェクトに変換してコントローラーメソッドに渡すことができる
- formクラスにパラメータを定義するのでリクエスト項目が増えてもコントローラーがスッキリする