6
4

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.

Microsoft Azure TechAdvent Calendar 2020

Day 9

Visual Studio Codeを使用してAzure API ManagementからFunctions APIをテストしてみた

Last updated at Posted at 2020-12-08

はじめに

OpenAPI仕様をベースに設計したAPIをAzure API Managementにインポートした後、実際にAPIを処理するバックエンドを用意してテストするにはAzure Portalを使うにしてもなかなか大変だと思います。

今回Windows10の端末にてVisual Studio Codeを用いてAzure API Managementに定義したAPIからAzure Functions用のAPIを作成し、作成したAPIをAzure FunctionsにデプロイしてAzure API Managementのテスト機能にてAPIをテスト送信する方法を紹介します。

  事前準備
    ↓
[Functions APIを作成]
(https://qiita.com/drafts/01ec28f92f295a8a4999/edit#functions-api%E3%82%92%E4%BD%9C%E6%88%90)
    ↓
Functionsへデプロイ
    ↓
Functions APIをテスト

事前準備

VS Codeをインストールした後にVS Code拡張機能であるAPI ManagementとFunctionsをそれぞれインストールします。

[Azure API Management拡張機能]
2020-12-08_15h35_41.png

[Azure Functions拡張機能]
2020-12-08_15h36_21.png

API Management拡張機能の以下アイコンをクリックし、 "Extension Settings" をクリックします。
2020-12-08_22h16_23.png

"Scaffold Azure Functions" を有効にします。
2020-12-08_22h18_24.png

Node.jsをインストール後にコマンドプロンプトを起動して、以下を実行しAutoRestをインストールします。
AutoRestとはMicrosoftがオープンソースとして公開しているOpenAPI仕様から様々な言語に対応したAPI読み出しライブラリを自動生成するツールです。

npm install -g autorest

Functions APIを作成

ここではAPI Managementに定義したAPIをベースにFunctionsに実装するAPIライブラリを作成します。

対象のAPI(Demo Conference API)にカーソルを合わせて右クリックし、"Scaffold Azure Functions" をクリックします。
2020-12-08_15h55_51.png

Functionsにて関数を実装する際の言語を選択します。
2020-12-08_15h57_01.png

自動生成されるFunctions用のAPIライブラリを格納する任意のフォルダ(空でOK)を選択して "Functions Location" をクリックします。
2020-12-08_16h03_00.png

上記実行後に任意のフォルダにFunctions用のAPIライブラリが作成されます。
2020-12-08_16h11_51.png

Functionsへデプロイ

ここでは上記で作成したAPIライブラリをFunctionsを新規作成してデプロイします。

VS Codeのプロジェクトとして先程作成したFunctions用のAPIライブラリが格納されている任意フォルダがOpenになっていることを確認します。
2020-12-08_16h34_04.png

"Deploy to Function App..." のアイコンをクリックします。
2020-12-08_16h13_10.png

対象のサブスクリプションを選択します。
2020-12-08_16h14_24.png

"+Create new Function App in Azure..." を選択します。
2020-12-08_16h15_12.png

新規に作成するFunctions名を入力します。
2020-12-08_16h16_35.png

Runtime stackを選択します。
2020-12-08_16h19_19.png

ロケーションを選択するとFunctionsの生成・デプロイが開始されます。
2020-12-08_16h19_37.png

Functionsの生成・デプロイが完了すると以下の通りAPI Managementにて定義した各APIがFunctionsに関数として作成されていることを確認することができます。
2020-12-07_23h02_15.png

Functions APIをテスト

それでは作成したFunctions APIをテストしてみます。

テスト対象のAPI(GetSpeakers)にカーソルを合わせて右クリックし、"Test operation" をクリックします。
2020-12-08_16h41_04.png

以下のようなAPI画面が表示されます。APIをAPI ManagementからFunctionsにテスト送信するために適切なFunction URIとサブスクリプションIDに置き換える必要があります。
2020-12-08_16h42_14.png

API Management名(apim-test-khigashi)にカーソルを合わせて右クリックし、"Copy Subscription Key" をクリックすることでサブスクリプションIDをコピーすることができます。
2020-12-08_16h42_49.png

テスト対象のAPI関数(GetSpeakers)にカーソルを合わせて右クリックし、"Copy Function Url" をクリックすることでFunction URI(API関数のURI)をコピーすることができます。
2020-12-08_16h43_55.png

上記コピーしたFunction URIとサブスクリプションIDを以下の通り置き換えます。
2020-12-07_23h41_05.png

API画面の "Send Request" をクリックすると右画面にResponse結果が表示され結果を確認することができます。
image.png

おわりに

Azure portalを使わずにVS Codeだけで簡単にAPI ManagementのバックエンドとしてFunctionsを配置してAPIテストをすることができました。特に開発者にとってはAPI設計⇒コード自動生成⇒APIテストの一連の流れをVS Codeのみで開発できるのは大変有効なのではないかと思います。またAPI ManagementのVS Code拡張機能はその他にも便利な機能がございます。オープンソースとしてGithub上で日々アップデートされておりますのでチェックしてみてください。

参考

6
4
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
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?