こんにちは。N高等学校3年次の @rikupin1105 です。
3年次にして Qiita 初投稿です。
作ったもの
タイトルの通り AzureFunctions で湯婆婆APIを作りました。
https://yubaba.azurewebsites.net/api/Yubaba/?name=名前
手順
リソースの作成
リソースグループは適当に作成し、関数アプリ名も適当に設定します。
ランタイムスタックは使用したい言語に合わせて設定します。今回はC#を使いたいので .Net Core を選択しました。
地域は写真ではオーストラリアになってますが、Japan East か Japan West あたりにすると良いでしょう。(写真撮った後に JapanEast にしました)
ホスティングの項目に移り、ストレージアカウント、オペレーティングシステム、プランの設定をします。
たぶん何も触らなくても写真のような設定になってると思います。たぶん
次に監視に移り Application Insights の設定をします。
今回は必要ないので無効にしています。
タグの項目は特に何も触らずに確認及び作成でリソースを作ります。
しばらくするとリソースが完成し、リソースに移動することができます。
開発!
関数に移動し、関数を追加します。
今回の開発環境はポータルでの開発。
(本当はVisualStudioを使ったほうがやりやすい)
テンプレートは HTTP triger
関数名は適当に
Authorization lebel は Anonymus
に設定しています。
関数が作成できたら、コードとテストからこのようなコードを作成し、保存します。
ソースコードは @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);
}
使ってみる
保存ができたらコードとテストのページにある 「関数の URL の取得」から URL を取得してみましょう。
そのままブラウザでURLを開くと名前の入力がないため仕様通り(?)500エラーになります。
URL クエリパラメータで名前を下のように設定します。
https://xxxxx.azurewebsites.net/api/xxxxxx/?name=名前
これで多分動くと思います。たぶん
まとめ
他のサービス GCP や AWS などでも同じような事ができると思うので、やってみたいと思いました。
Azure Functions が特に詳しいわけではないので、ここの設定こうしたほうがいいよ、などあれば教えて下さい。
アイデア次第で面白いものがたくさん作れると思うので、是非試してみてください。