LoginSignup
0
1

More than 3 years have passed since last update.

ASP.NETのWebAPI(Post)をPowerShellで叩いてみる

Last updated at Posted at 2019-08-15

ASP.NETのWebAPI

ASP.NETでWebAPIのプロジェクトを作るとValuesController.csというWebApiコントローラーがデフォルトで用意されていますが、今回はそれで検証してみました。

なお、当方の環境は大人の事情でASP.NET MVC 5ですが、たぶんCoreでも同じような感じじゃないかと思われます。

// POST api/values
public void Post([FromBody]string value)
{
    var hoge = value;
}

PowerShellでPostする

PowerShellでWebAPIを叩く場合、「Invoke-WebRequest」コマンドレットが使えます。
今回はPostメソッドを叩きたいので、-Methodパラメーターに「Post」を指定しています。

Invoke-WebRequest -Uri http://localhost:49298/api/values -Method 'Post' -Body @{value="hello"}

Invoke-WebRequestでPostした結果:value = null

ASP.NETのWebAPIアプリをデバッグ実行して、Invoke-WebRequestコマンドレットを実行してみます。
image.png

おや、valueがnullになってますね?
-Bodyパラメーターとして、value="hello"を指定していたので、"hello"という文字列が渡ってくるかなと思ったのですが・・・

パラメーターをJsonで渡す場合、WebAPI側にJsonと合わせたクラスを用意する必要がある

結論ですが、WebAPI側にパラメーターに合わせたクラスを用意してあげる必要があるみたいです。
下記のように、Postメソッドのパラメーターをクラスにしてみたところ、無事valueが取得できました。

public class ValuesController : ApiController
{
    // POST api/values
    public void Post([FromBody]JsonParam param)
    {
        var hoge = param.value;
    }
}

public class JsonParam
{
    public string value { get; set; }
}

実行結果
image.png

現場からは以上です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1