Azure API ManagementとAzure モバイルサービスを組み合わせて使ってみた


Azure Remote Appがやっと使えるようになったけど、構成中のまま進まないので、あまり使われて無さそうなAPI Managementを試してみた。

API Managementは自分が作ったWeb APIを管理するために使う。Twitter APIとかでよくある1分間に5回まで、1日100回までとかいったクォータを管理することができるのと、APIのドキュメントを自動生成してくれる。

考えられるシチュエーションとしては、とあるWebサービスなりスマホアプリを作成したら、マッシュアップのため開発者向けAPIを提供することになった。でも開発者用のAPIキーを管理するのはめんどくさいし、特定の開発者がリソースを占有するのも問題だ。削除のAPIを開発者に公開したくない。

そんなときに使えるサービスなのかなと思う。

ダッシュボードはこんな感じでまぁまぁ見やすい感じ。

モバイルサービスのAPIの追加

モバイルサービスのToDoItemテーブルを操作してみたいと思います。モバイルサービスは別途サービスを作成して、ToDoItemテーブルを作成しておきます。

API Managementにて、ADD API を選びます。

タイトル、モバイルサービスのURL、API Managementのサフィックスをそれぞれ次のようにいれます。

一覧に表示されるので、TODOITEMSをクリックして編集します。

「Operation」タブを選択し、「ADD OPERATION」をクリック。API Managementからモバイルサービスに対して行う操作を登録します。

次のようにHTTP verb等に値をいれます。

Parametersは無くてもいいですが、とりあえずfilterだけ設定できるようにしてみます。パラメーターに設定できる値は他にもあります。Query records operationを参照してください。

設定が終わったらSaveをクリックして保存します。

モバイルサービスAPIキーの設定

API ManagementからモバイルサービスのAPI呼び出しを行う際に、APIキーが必要です。(モバイルサービス側の構成で認証不要にしていれば必要無い)

APIキーの設定はリクエストヘッダーにX-ZUMO-APPLICATIONを設定します。API Managementにてリクエストヘッダーを設定してAPIキーを入力するには、Policiesを編集します。(最初わからなくて出来ないかと思った)

Policy ScopeのAPIでtodoitemsを選択して、Policy definition の<inbound />の間に次の値を入れてRecallulate...ボタンを押して保存します。

<set-header name="X-ZUMO-APPLICATION" exists-action="append">
    <value>YOU APLICATION KEY</value>
    <!--for multiple headers with the same name add additional value elements-->
</set-header>

開発者ポータルを確認してみる

以上の操作をしてできあがった開発者向けのポータルが https://nnasaki.portal.azure-api.net です。

先ほど設定したAPIドキュメントは https://nnasaki.portal.azure-api.net/docs/services/2/operations/8 にあります。

サンプルコード自動生成

面白いのは、各言語ごとにサンプルコードを自動生成してくれます。JavaもあるしCurlのサンプルとかも面白い


ブラウザ上でAPIが試せる

さらにOpen Consoleをクリックすると、その場でAPIが試せます。subscription-keyを設定して(ログインしていないと出ない)HTTP GETをクリックする。

こんな感じでレスポンスが帰ってきます。

$filterにcomplete eq falseといれてHTTP GETしてみます。

ちゃんとフィルタリングした結果が帰ってきます。

まとめ

WEB上でぽちぽちしていくだけでそれっぽい開発者ポータルとAPIドキュメント兼プレイグラウンドが出来てしまいました。ポータルのレイアウトの変更とかもできるし、独自ドメインの設定も出来るようです。

モバイルサービスと組み合わせると、それっぽいWebサービスが1時間かからずにできちゃいますね。恐ろしい世の中です。