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 おすすめ入門講座

3つのWebアプリケーションの開発を通して、ASP.NETについて基礎から学べるおすすめの入門講座がこちら☟

【入門者向け】ASP.NET MVCでWebアプリ開発のノウハウを学ぼう!

icon

おすすめ記事はコチラ

スマレジ テックファーム 1

スマレジ テックファーム で Webエンジニアとして勤めている tomoです。 今回は株式会社スマレジや私が所属している 「 スマレジ テックファーム 」についてPRしていきたいと思います。 スマレジ ...

2

FromBody 属性を使用して、 ASP.NET Core(.NET 6)のWebAPIでBodyパラメータのJSONを受け取る方法を解説します。 FromBody 属性 POSTやGETで呼び出さ ...

PC picture 3

ASP.NET Core(.NET 6)でCookie認証のタイムアウトを設定する方法を解説します。 Cookieの有効期限について Cookieには通常はタイムアウト(有効期限)を設定します。 基本 ...

4

ASP.NET Core(.NET 6)でクロスオリジンリクエスト ( CORS )を設定する方法を解説します。 簡単に クロスオリジンリクエスト ( CORS )とは何かについても少し解説したいと思 ...

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