プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

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による実行方法はこちら

VS CodeでAPIの実行テストをする方法