ASP.NET ASP.NET Core WEB API プログラミング

【 ASP.NET WebAPI 】URLパラメータの受け取り方法 FromQuery

ASP.NET Core(.NET 6)のWebAPIURLパラメータの受け取り方法を解説します。

FromQuery 属性

POSTやGETで呼び出されるメソッドの引数に [FromQuery] という属性パラメータを指定することでURLパラメータの値を簡単に取得することができます。

逆にURLパラメータの値などの複数の値を取得したい場合は [FromBody] という属性パラメータの方が適しています。
[FromBody] についての解説はこちらになりますので、そちらも参考にしてください。

例えば、WebAPIの以下のようなユーザログイン時のPOSTメソッドがあるとします。
ですが、現在のままではURLパラメータとして渡されるユーザIDパスワードをWebAPI側のメソッドで受け取ることができません。

// POST: users/login?loginid=test&password=1234
[HttpPost("login")]
public async Task<ActionResult<User>> LoginUser()
{
  //処理を書く
}

そういった場合に引数にユーザIDとパスワードを指定した上で、それらの変数に [FromQuery] を設定することで、
URLパラメータで渡された値が引数で指定したユーザIDとパスワードに格納されます。

ここで注意すべきは引数に設定する変数名はURLパラメータのパラメータ名と同じ(半角全角は区別しない)にする必要があるということです。

// POST: users/login?loginid=test&password=1234
[HttpPost("login")]
public async Task<ActionResult<User>> LoginUser([FromQuery] string loginid, [FromQuery] string password)
{
  //処理を書く
}

FromQuery 以外の受け取り方法

FromQuery 以外にもURLパラメータの受け取り方法があります。

POSTやGETに対応するメソッドを用意するControllerには「Controller Base」が継承されていることから、

引数に FromQuery のパラメータを用意しなくてもプログラムの裏ですでに受け取ることができています。

その裏側で受け取れているURLパラメータを参照する場合、
以下のように「Request.QueryString」でURLの「?」以降のパラメータをすべて取得することができます。

ただし、パラメータを全て取得することから、複数のパラメータがある場合はそれらを分割して配列Dictionaryに格納する必要があります。

// POST: users/login?loginid=test&password=1234&loginname=testtarou
[HttpPost("login")]
public async Task<ActionResult<User>> LoginUser([FromQuery] string loginid, [FromQuery] string password)
{
  //?以降のパラメータを全て取得する
  //?loginid=test&password=1234&loginname=testtarou
  var query = Request.QueryString;

  //パラメータ分割
  foreach (var key in query.Keys)
    {
        string value = query[key];
        System.Console.WriteLine($"key={key}, value={value}");
    }
}

おすすめ記事はコチラ

ASP.NET Web Forms 1

この記事ではマイクロソフト社が開発・提供しているWebアプリケーション開発用フレームワーク「ASP.NET」の「Web Forms」を「MVC」と比較しながらメリットやデメリット等を含めて解説していき ...

C#VB 2

今回はC#(ver.7.0以降)、VB(ver. 15以降)でforeachループ内で繰り返し回数を参照する方法について解説していきます。 従来の記述方法とよりスマートに記述する方法の2通りを以下にな ...

3

この記事ではSQL Serverで使用できる「STUFF」という便利な関数の使い方について、解説していきます! 他にも便利な関数があれば、別記事にて使用方法を解説していきたいと思います! STUFF ...

4

今回はSQL ServerでデータをXML形式で取得する方法について書いていきます。 FOR XML PATH SQL Serverには「FOR XML PATH」という関数があって、SQL分の末尾に ...

-ASP.NET, ASP.NET Core, WEB API, プログラミング
-, ,