【ASP.NET Core Web】クエリパラメーターを取得する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【ASP.NET Core Web】クエリパラメーターを取得する

2024-3-8 |

.NET 8のASP.NET Core Webでクエリパラメーター取得したい!

概要

今回の記事では、.NET 8のASP.NET Core Webでクエリパラメーターを取得する手順を掲載する。

クエリパラメーターは、例えばAPIサーバーからGETでデータを取得する時にURLで?name=aaaという形で指定するパラメーターの種類。

exsample.com/api/users?id=123456

上記でいうと?以降のid=123456の部分がクエリパラメーターになる。

複数パラメーターを設定する場合は

exsample.com/api/users?id=123456&name=aaa

&で連結する。

仕様書

環境

  • .NET 8.0

手順書

クエリパラメーターを取得する方法には、いくつかありこの記事では「引数に属性FromQueryを設定する方法」と「Request.Queryを使う方法」の2パターンを紹介する。

引数に属性FromQueryを設定する方法

引数に属性FromQueryを設定するとあらかじめ受け取れるパラメーターの名前を指定することが出来る。

namespace GetPathParameter.Controllers
{
    public class UserController : Controller
    {
        [HttpGet("api/users")]
        public ActionResult<string> Get([FromQuery]string id)
        {
            // ユーザーIDからユーザーの名前を返すみたいな!
            return GetUserName(id);
        }

        ...
    }
}

例えば下記のような感じでGETすると

exsample.com/api/users?id=123456

引数id123456が文字列で格納される。

Request.Queryを使う方法

メソッドの中でRequest.Queryを実行してパラメーターを辞書型で取得することが出来る。

namespace GetPathParameter.Controllers
{
    public class UserController : Controller
    {
        [HttpGet("api/users")]
        public ActionResult<string> Get()
        {
            var params = Request.Query;

            // ユーザーIDからユーザーの名前を返すみたいな!
            // 実際にはちゃんとパラメーターが渡されてるかなど確認する!
            return GetUserName(params["id"]);
        }

        ...
    }
}

前者の方法の方がセキュアかも?!

まとめ(感想文)

REST API的にする時に使えるかもね!