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借りてみたんですが、上手くいかなかったので次回にでもやってみます!
コメント