世界のやまさ

SEKAI NO YAMASA

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

kobito.1402416220.009483.png

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

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

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

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

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

kobito.1402416521.782845.png

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

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

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

kobito.1402417097.819989.png

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

kobito.1402417234.289642.png

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

kobito.1402417262.804404.png

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

kobito.1402417327.451279.png

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

kobito.1402417417.421747.png

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

kobito.1402417666.691807.png

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

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

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

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

kobito.1402417980.266534.png

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>

kobito.1402418161.956726.png

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

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

kobito.1402418574.565741.png

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

kobito.1402418639.425234.png

サンプルコード自動生成

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

kobito.1402418720.728917.png kobito.1402418752.162788.png

ブラウザ上でAPIが試せる

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

kobito.1402418874.508204.png

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

kobito.1402418954.778527.png

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

kobito.1402419042.538014.png

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

kobito.1402419101.345263.png

まとめ

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

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