FromBody 属性を使用して、
ASP.NET Core(.NET 6)のWebAPIでBodyパラメータのJSONを受け取る方法を解説します。
FromBody 属性
POSTやGETで呼び出されるメソッドの引数に [FromBody] という属性パラメータを指定することでBodyに格納された複数の値やJSONを簡単に取得することができます。
逆にURLパラメータの値などの単一の値を取得したい場合は [FromQuery] という属性パラメータの方が適しています。
[FromQuery] についての解説はこちらになりますので、そちらも参考にしてください。
例えば、以下のようなPOSTリクエストで送信されてくるJSON値があるとします。
{
"LoginName": "test",
"Password": "1234",
"TelNo": "090-****-****"
}
上記のJSONをWEBAPI側の対応するPOSTアクションで受け取りたい場合、
まずは、そのJSONデータを格納するためのクラスを用意する必要があります。
その時作成するクラスは受け取るJSONと同じ構造にします。
public class Root
{
public string LoginName { get; set; }
public string Password { get; set; }
public string TelNo { get; set; }
}
その次に、用意したクラスを実際のJSONを受け取るPOSTアクションの引数に設定します。
// POST: users/login
[HttpPost("login")]
public async Task<ActionResult<User>> LoginUser([FromBody] User user)
{
string name = user.LoginName;
string pass = user.Password;
string telno = user.TelNo;
//処理を書く
}
これでPOSTリクエスト時、Bodyに格納されているJSONデータをPOSTアクション側で正常に受け取ることができます。
ASP.NET おすすめ入門講座
3つのWebアプリケーションの開発を通して、ASP.NETについて基礎から学べるおすすめの入門講座がこちら☟
【入門者向け】ASP.NET MVCでWebアプリ開発のノウハウを学ぼう!