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時間かからずにできちゃいますね。恐ろしい世の中です。