この記事は、NEXTSCAPE クラウドインテグレーション事業本部 Advent Calendar 2018 17日目の記事です。
こんにちは。最近は HoloLens 開発チームの茨木です。
ネタは Azure Functions です。Functions は HoloLens アプリのAPIとしてもよく使ってます。
この記事では、いくつかのTipsをご紹介します。主に HttpTrigger なのですが。
HTTPヘッダを読む
[FunctionName("Function1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { var token = req.Headers["id_token"].FirstOrDefault(); }
HTTPヘッダに書いて返す
[FunctionName("Function1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { req.HttpContext.Response.Headers.Add("MyAppToken", "i-am-goodness-user"); }
Microsoft.AspNetCore.Http.HttpRequest なので、なんでもアリですね。
URLをカスタマイズする
[FunctionName("Function1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "hoge/moge/index.html")] HttpRequest req, ILogger log) {}
ASP.NET でお馴染みですね。
URLをパラメーターとして分解して、変数に入れてもらう
public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "GetData/{hoge}/{moge}")] HttpRequest req, string hoge, string moge, ILogger log) { log.LogInformation($"hoge={hoge}, moge={moge}"); }
URLをパラメーターとして分解して、変数に入れてもらって、そのままBlobを読む
[FunctionName("Function1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "GetData/{hoge}/{moge}")] HttpRequest req, string hoge, string moge, [Blob("BlobContainerName" + "/{hoge}/{moge}.png", FileAccess.Read)] Stream image, ILogger log) { log.LogInformation($"hoge={hoge}, moge={moge}"); }
Azure Storage とバインドすると、なかなかすごい事ができます。
ちょっとしたTipsでしたが、このくらいできる事を知っておくと、実際のケースで自然と応用案も出てくるのではないでしょうか。
Azure Functions はいいぞ!