[Azure Functions][C#]Hello, World(初期テンプレ実行)する

10月から現場でAzure Functions(C#)をやり始めています。
フロントがNuxt.jsでバックエンドがAzure Functionsらしいです。C#を任されることになるとは思ってもみなかったですw
久々にやるので家でも少しずつ学習したいと思います。
とりあえず、おきまりのテンプレートを動かすところから!

環境

ここでは、Visual Stadio 2019を使っています。
現場ではVisual Stadio for Macです。結構使い勝手が違いますよね、メニューのところとか。

手順

こんな感じで開くので新規プロジェクトを作成します。

名前を付けて保存場所を開きます。

基本的にはHttp Triggerを使うようです。とりあえず、Http Triggerを選びます。

画面

こんな感じで、テンプレコードが入った状態で、プロジェクトが出来上がります。

コードの説明

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace HelloFunction
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string name = req.Query["name"];

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data = JsonConvert.DeserializeObject(requestBody);
            name = name ?? data?.name;

            return name != null
                ? (ActionResult)new OkObjectResult($"Hello, {name}")
                : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
        }
    }
}

パッと見、最初何がなんだかでした。。
FunctionNameがそのままですが関数名になって、重要なのがHttpRequestについている、[HttpTrigger・・・]のところになります。

これ、属性っていうらしいですが、AuthorizationLevelでアクセスレベル。そのあとにgetメソッドでアクセスするかpostかを記載します。
RouteはアクセスするURLを定義できます。ルーティング定義するところですね。
nullにしている場合はFunctionNameがURLとして使われるようです。

テンプレートのプログラムはget, postでアクセスを受け取って、
リクエストからnameを拾って、「Hello, [パラメータ名前]」で返すようになっています。
パラメータがなかった場合に「Please….」のほうですね。

動作確認

デバッグを開始すると、コンソールが開いてURLが表示されます。

アクセスすると、結果がしっかり表示されていますね。
渡したパラメータが名前として出てきます!

Azureで実際に動かす場合はVisual Stadioから発行します!
今回無料枠でAzure借りてみたんですが、上手くいかなかったので次回にでもやってみます!

コメント

タイトルとURLをコピーしました