3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

N高等学校 (2)Advent Calendar 2020

Day 3

Azure Functions で湯婆婆 API を作る

Last updated at Posted at 2020-12-02

こんにちは。N高等学校3年次の @rikupin1105 です。
3年次にして Qiita 初投稿です。

作ったもの

タイトルの通り AzureFunctions で湯婆婆APIを作りました。
https://yubaba.azurewebsites.net/api/Yubaba/?name=名前

手順

リソースの作成

親の顔より見た(?)ポータル画面からリソースを作成します。
スクリーンショット (23).png

関数アプリを選択します。
スクリーンショット (24).png

リソースグループは適当に作成し、関数アプリ名も適当に設定します。
ランタイムスタックは使用したい言語に合わせて設定します。今回はC#を使いたいので .Net Core を選択しました。
地域は写真ではオーストラリアになってますが、Japan East か Japan West あたりにすると良いでしょう。(写真撮った後に JapanEast にしました)
スクリーンショット (31).png

ホスティングの項目に移り、ストレージアカウント、オペレーティングシステム、プランの設定をします。
たぶん何も触らなくても写真のような設定になってると思います。たぶん
スクリーンショット (30).png

次に監視に移り Application Insights の設定をします。
今回は必要ないので無効にしています。

タグの項目は特に何も触らずに確認及び作成でリソースを作ります。

しばらくするとリソースが完成し、リソースに移動することができます。
スクリーンショット (27).png

開発!

関数に移動し、関数を追加します。
今回の開発環境はポータルでの開発。
(本当はVisualStudioを使ったほうがやりやすい)
テンプレートは HTTP triger
関数名は適当に
Authorization lebel は Anonymus
に設定しています。
スクリーンショット (28).png

関数が作成できたら、コードとテストからこのようなコードを作成し、保存します。
ソースコードは @okazuki さんのコードを参考にさせていただきました(参考というかコピペというか)
C# で湯婆婆を実装してみる(𠮷田さんにも対応)


#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Globalization;
using System.Threading.Tasks;

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    string name = req.Query["name"];

    var nameInfo = new StringInfo(name);
    var random = new Random();
    var newNameIndex = random.Next(nameInfo.LengthInTextElements);
    var newName = nameInfo.SubstringByTextElements(newNameIndex, 1);

    string responseMessage = $"今からお前の名前は{newName}だ。いいかい、{newName}だよ。分かったら返事をするんだ、{newName}!!";

    return new OkObjectResult(responseMessage);
}

スクリーンショット (29).png

使ってみる

保存ができたらコードとテストのページにある 「関数の URL の取得」から URL を取得してみましょう。
そのままブラウザでURLを開くと名前の入力がないため仕様通り(?)500エラーになります。
URL クエリパラメータで名前を下のように設定します。
https://xxxxx.azurewebsites.net/api/xxxxxx/?name=名前
これで多分動くと思います。たぶん
スクリーンショット 2020-11-25 152518.png

まとめ

他のサービス GCP や AWS などでも同じような事ができると思うので、やってみたいと思いました。
Azure Functions が特に詳しいわけではないので、ここの設定こうしたほうがいいよ、などあれば教えて下さい。
アイデア次第で面白いものがたくさん作れると思うので、是非試してみてください。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?