属性 [FromBody] を使って、APIコントローラーで JSONをオブジェクトにバインドする方法を書いていきます。
プロジェクトの概要
動作確認のために作成したプロジェクトは以下の通りです。
- 言語:C#
- テンプレート:ASP.NET Core Web API
- フレームワーク:.NET 6.0
- HTTPS 用の構成:無効
- コントローラーを使用する:有効
- OpenAPI サポートを有効にする:無効
- プロジェクト名:WebApiSample
プロジェクトの作成方法は、こちら に記載しています。
目次
- コントローラーの作成
- モデルの作成
- 動作確認
1. コントローラーの作成
プロジェクトの Controllersフォルダの下に、以下の APIコントローラーを追加します。
Controllers/CatController.cs
using Microsoft.AspNetCore.Mvc; using WebApiSample.Models; namespace WebApiSample.Controllers { [ApiController] public class CatController : ControllerBase { [HttpPost("/cat")] public Cat Post([FromBody] Cat cat) { return cat; } } }
バインドしたいオブジェクトを引数にして、[FromBody] を指定しています。
※ コントローラーの追加方法は、こちら に記載しています。
2. モデルの作成
動作確認のために、以下のオブジェクトを作成します。
Models/Cat.cs
namespace WebApiSample.Models { public class Cat { public string Name { get; set; } public int Age { get; set; } } }
3. 動作確認
curl http://localhost:xxxx/cat -H "Content-Type: application/json" -d "{\"name\":\"Mike\", \"age\":2}"
送信すると、以下の JSONがレスポンスとして返却されます。
{"name":"Mike","age":2}