C# APIでPOSTパラメーターを受け取る方法
APIでPostパラメーターを受け取る方法として下記2通りの方法を紹介する。
①JTokenで受け取る方法
②バインドクラスを作成して受け取る方法
■環境
OS:Windows
言語:C♯
DB:SQL Server
フレームワーク:.NET Framework4.8
API実行:VS Code
■APIプロジェクトの作成
Visual Studioで下記プロジェクトを作成する
・テンプレート:ASP.NET Web アプリケーション(.NET Framework)
⇒ ASP.NET アプリケーションの空のプロジェクトテンプレート
・フォルダーおよびコア参照の追加:Web API
■コントローラークラスの作成
「Controllers」⇒「追加」⇒「新規スキャフォールディングアイテム」⇒「Web API」⇒「Web API2 コントローラー -空」を選択して「追加」を押下
コントローラー名は任意 ※今回は「SampleController」とする
■POSTメソッドの作成
①JTokenで受け取る場合
下記のコントローラークラスを作成する
戻り値の型:「IHttpActionResult」
引数:「JToken」
・SampleController.cs
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace PostParameterSample.Controllers
{
public class SampleController : ApiController
{
public IHttpActionResult Post(JToken token)
{
//パラメーターを動的に取得できるように「dynamic型」をパラメーターを受け取る
dynamic param = token;
//リクエストボディ内の「id」と「name」を変数にセット
var id = param.id;
var name = param.name;
return Ok("id:" + id + "/name:" + name);
}
}
}
②バインドクラスを作成して受け取る場合
下記のコントローラークラスを作成する
戻り値の型:「IHttpActionResult」
引数:「下記で作成するバインドクラス」
リクエストパラメーター名と同様のプロパティ名を持つバインドクラスを作成する
今回は「Modelsディレクトリ」配下にバインドクラスとなる「Param.cs」を作成する
・Param.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace PostParameterSample.Models
{
public class Param
{
public string id { get; set; }
public string name { get; set; }
}
}
・SampleController.cs
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using PostParameterSample.Models;
namespace PostParameterSample.Controllers
{
public class SampleController : ApiController
{
public IHttpActionResult Post(Param param)
{
//リクエストボディ内の「id」と「name」を変数にセット
var id = param.id;
var name = param.name;
return Ok("id:" + id + "/name:" + name);
}
}
}
■実行結果を確認
VS CodeでAPIを実行して結果を確認する
※VS Codeによる実行方法はこちら