- クラウド技術
Azure Functions(Httpトリガー)のパラメーター渡し方
- その他
目次
Azure Functionsとは
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
Azure Functionsは、マイクロソフトのクラウド「Microsoft Azure」が提供するサービスのひとつで、サーバーレスアーキテクチャを実装するためのサービスです。Azure Functionsを利用してWebAPI、Webサービスを簡単に作ることができます。
Httpトリガーとは
Azure Functionsで作成する処理のことを「関数」と呼びます。トリガーは関数の処理を開始するための条件となるもので、関数には必ず1つのトリガーを定義する必要があります。トリガーの種類について「Http」や「タイマー」など様々なトリガーがサポートされていますが、一番よく使われているのはHttpトリガーです。HTTP トリガーでは、HTTP 要求でAzure Functionを呼び出すことができます。
GETメソッドとPOSTメソッドの違い
「GET」と「POST」は、どちらもHTTPリクエストメソッドですが、WebブラウザからWebサーバに値を渡す際の、値の渡し方が違います。
GETメソッドではURLの末尾に”?”をつけ、その後ろに以下の形式でパラメータを記述することで、データを渡すことが可能です。
- パラメータ名=値
- 複数パラメーターの場合”&”で区切る
POSTメソッドではBody部にパラメータが記述され、そのためURLにはパラメータが記述されません。
GETとPOSTのパラメーター渡し方
今回は、HTTPのGET or POSTメソッドを受け、Azure Function(Httpトリガー)でパラメータの値を取得する方法を整理いたします。
◆GETメソッドのパラメーター取得方法
①次の例は、※1のURLに対してHttpリクエスト文字列よりパラメーターdateとidの値を取得します。
※1:URLの例:http://<APP_NAME>.azurewebsites.net/api/HttpTriggerCSharp?date=20221101&id=002
1 2 3 4 5 6 7 |
【Azure Functionの実装の例】 [FunctionName("HttpTriggerCSharp")] public static IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req, ILogger log) { //パラメーターをログに出力する logger.LogInformation("パラメーター 日付:" + req.Query["date"] +";ID:" + req.Query["id"]); (略) }} |
②またHTTP トリガーの入力バインドで省略可能なrouteプロパティを使用すると、このルートをカスタマイズできます。次の例は、route内の 2 つのパラメーターdateとidの値を取得します。
1 2 3 4 5 6 7 8 |
[FunctionName("HttpTriggerCSharp")] public static IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "products/{date}/{id}")] HttpRequest req, string date, string id, ILogger log) { //パラメーターをログに出力する logger.LogInformation("パラメーター 日付:" + date +";ID:" + id); (略) } |
この構成を使用すると、次のルートを使用してFunctionのアドレスを指定できるようになります。
URLの例:http://<APP_NAME>.azurewebsites.net/api/products/20221101/002
◆POSTメソッドのパラメーター取得方法
①下記の例は、リクエストボディ(JSON)を解析してパラメーターdateとidの値を取得します。
1 2 3 4 5 6 7 8 9 10 11 12 |
[Function("HttpTriggerCSharp")] public static HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req, FunctionContext executionContext) { //ログオブジェクト取得 var logger = executionContext.GetLogger("HttpTriggerCSharp"); //リクエストボディ(JSON)を解析 string requestBody = new StreamReader(req.Body).ReadToEnd(); dynamic data = JsonConvert.DeserializeObject(requestBody); //パラメーターをログに出力する logger.LogInformation("パラメーター 日付:" + data?.date +";ID:" + data?.id); (略) } |
②また下記の例は、HttpRequestDataのクエリよりパラメーターdateとidの値を取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[Function("HttpTriggerCSharp")] public static HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req, FunctionContext executionContext) { //ログオブジェクト取得 var logger = executionContext.GetLogger("HttpTriggerCSharp"); //パラメータ取得 var queryDictionary = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(req.Url.Query); StringValues launchTypeSV1; StringValues launchTypeSV2; queryDictionary.TryGetValue("date", out launchTypeSV1); queryDictionary.TryGetValue("id", out launchTypeSV2); //パラメーターをログに出力する logger.LogInformation("パラメーター 日付:" + launchTypeSV1.ToString() +";ID:" + launchTypeSV2.ToString()); (略) } |
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>