1.はじめに
webアプリを開発している中で、RequestParamとRequestBodyを使用する機会があったのですがこの2つの違いって何かという疑問をもったため記事を書いていこうと思います。
2.RequestParamとRequestBody
まずはそれぞれがどういう役割をもつかを理解していきます。
~RequestParam~
HTTPリクエストのクエリパラメータやURLパスから特定の値を取得します
例えば、/users?id=123 というリクエストURLから、クエリパラメータ id=123 を取り出す場合に使われます
@GetMapping("/users")
public String getUserById(@RequestParam("id") int id) {
return "User ID: " + id;
}
この例では、URL /users?id=123 にアクセスすると、id パラメータが取得されて "User ID: 123" が返されます。
~RequestBody~
HTTPリクエストのボディ部分に含まれるデータをサーバー側で受け取るために使用
例えば、JSONデータを受け取る場合のコードは次のようになります。
@PostMapping("/createUser")
public String createUser(@RequestBody User user) {
// Userオブジェクトにリクエストボディのデータがマッピングされる
return "User created: " + user.getName();
}
{
"name": "John",
"age": 30
}
※@RequestBody で送信される JSON データが User クラスに対応するためには、User クラスのフィールドが JSON データのキー(プロパティ名)と一致している必要があります
クライアントは、通常、POSTリクエストを使用してデータをボディに含めて送信します。例えば、JavaScriptのfetch関数やPostmanなどのツールから送信できます。
3.RequestParamとRequestBodyの違い
データソース:HTTPリクエストのクエリパラメータやフォームデータ
用途:簡単なデータ(検索条件)を取得時に使用
データソース:HTTPリクエストのボディ部分
用途:JSONなどの複雑なオブジェクトデータを取得する場合に使用
簡単にまとめると、@RequestParamはURLやフォームから、@RequestBodyはリクエストボディからデータを取得するということです。
4.まとめ
違いを理解できたので、次からは用途にわかえて使用していければと思います。