TL;DR
Visual Studio でAzure Functions のAPIを実装します。その後、Visual StudioからAzure App Serviceを新規作成し発行します。 また、PostmanおよびPowershellを使ってローカルでの確認とAzureで動作確認します。 APIはHttpTrigger(GET/POST)で、リクエストとレスポンスにJSONを使います。 開発環境の準備は含まれないため、Visual Studio を使用する Azure Functions の開発 などを参考にしてください。
目次
プロジェクトを作成する
- Visual Studioで[ファイル > 新規作成 > プロジェクト]を選択し、[Visual C# > Cloud > Azure Functions]を選択して、任意の場所に設定してOKをクリック。
- Http Trigger を選択してOKをクリック。
- Function1という名前のサンプルが生成される。
Functionを実装する
- クラス名とファイル名、FunctionNameを「Echo」に変更。
public static class Echo { // Invoke-RestMethod -Uri "http://localhost:7071/api/Echo" -Method Post -ContentType "application/json" -Body '{"message":"Hello Azure Functions" }' // Invoke-RestMethod -Uri "https://YourFunctionURL" -Method Post -ContentType "application/json" -Body '{"message":"Hello Azure Functions" }' [FunctionName("Echo")] public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log) {
- リクエストクラスを作成。
class EchoRequest { public string message { get; set; } }
- 変数名をnameからmsgに。
- クエリパラメータを取得するところをnameからmessageに修正。
- bodyからパラメータを取得するところを修正。
if (msg == null) { // Get request body var data = await req.Content.ReadAsAsync<EchoRequest>(); msg = data?.message; }
using Newtonsoft.Json; using Newtonsoft.Json.Linq;
- レスポンスを作成する部分を実装する。
- IdとしてGuidのハイフンなしを発行。
var jObject = new JObject(); jObject["Id"] = Guid.NewGuid().ToString("N"); jObject["Message"] = msg; var res = req.CreateResponse(HttpStatusCode.OK); res.Content = new StringContent(jObject.ToString(Formatting.None)); return res;
ローカルで実行する
- F5でデバッグ実行。
- Postman で試す方法。
- PowerShellで試す方法。
Invoke-RestMethod -Uri "http://localhost:7071/api/Echo" -Method Post -ContentType "application/json" -Body '{"message":"Hello Azure Functions" }'
Azureに発行する
- プロジェクト右クリックから発行を押すか、ビルド > [プロジェクト名] を発行する を選択する
- 今回は新規作成
- 必要な情報を入力または選択して作成
Azure Functionsの動作確認
- Azure Portal で関数のURLを取得する
- PostmanまたはPowerShellで実行。ローカルで実行するを参照。