【ASP.NET Core Web】クエリパラメーターを取得する
2024-3-8 | ASP.NET Core Web
.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
引数id
に123456
が文字列で格納される。
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的にする時に使えるかもね!