Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

ASP.NET Core リクエストのJSONをバインドする方法

属性 [FromBody] を使って、APIコントローラーで JSONをオブジェクトにバインドする方法を書いていきます。

プロジェクトの概要

動作確認のために作成したプロジェクトは以下の通りです。

  • 言語:C#
  • テンプレート:ASP.NET Core Web API
  • フレームワーク:.NET 6.0
  • HTTPS 用の構成:無効
  • コントローラーを使用する:有効
  • OpenAPI サポートを有効にする:無効
  • プロジェクト名:WebApiSample

プロジェクトの作成方法は、こちら に記載しています。

目次

  1. コントローラーの作成
  2. モデルの作成
  3. 動作確認

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. 動作確認

デバッグ実行して、curlJSONを送信します。

curl http://localhost:xxxx/cat -H "Content-Type: application/json" -d "{\"name\":\"Mike\", \"age\":2}"
  • ポート番号は可変です。
  • Windows用に JSONの内容をエスケープしています。

送信すると、以下の JSONがレスポンスとして返却されます。

{"name":"Mike","age":2}