個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Microsoft MVP for Developer Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

Xamarin iOS + Azure Mobile Apps の利用方法 (4) View の代わりとなるカスタム API の作成 (Easy Tables, Easy API)

今回は、View の代わりとなる API を作成します。

Easy Tables は簡単で素晴らしいんですが、簡便さを追求してるが故、JOIN したクエリの結果セットが欲しいというようなシナリオには対応していません。
さらに、Xamarin対応の Microsoft.WindowsAzure.MobileServices.IMobileServiceSyncTable インターフェースにも Join メソッドが無いため、自前でどうにかする必要があります。

結論として、カスタム API を作成し、その API で JOIN したクエリの結果セットを返すようにしました。

カスタム API では任意のクエリが利用できるので、IMobileServiceTable インターフェースがサポートしていない機能を実装したいときには、カスタム API を作成するのが良さそうです。

まずは Azure ポータルにログインします。

すべてのリソース → あなたが作成したWebApp → すべての設定 → Easy API をクリック。

f:id:hiro128:20160622163147p:plain

Add をクリック

f:id:hiro128:20160622163410p:plain

作成するカスタム API の名前を入力し、OK をクリック。

f:id:hiro128:20160622163430p:plain

作成された API、ExtendedTestItem をクリックし、
Edit Script をクリックします。

f:id:hiro128:20160622163812p:plain

Visual Studio Online で、当該 API の Node.js 編集画面が開きますので、
JOIN したクエリの結果セットを返す、スクリプトを記述します。

※SQLさえ書き換えれば、どんな結果セットでも返せます。

f:id:hiro128:20160622163959p:plain

スクリプトは入力と同時に保存されているので、これで API の作成が完了しました。

次に、API が正しく動作しているか確認するため、API に直接リクエストを投げて確認します。

今回は、Postman という Chrome アプリを使用しました。
アプリのインストールはこちらから

URL に API の URL (http://(アプリのURL)/api/(API名)) を入力、
ヘッダに、zumo-api-version : 2.0.0 と Content-Type : application/json をセットした上、
GETでリクエストします。

f:id:hiro128:20160622164944p:plain

下記のように結果セットを json で取得できれば API 作成成功です。

f:id:hiro128:20160622172132p:plain

これを Xamarin のアプリ側から InvokeApiAsync で叩けばエンティティを取得できます。
(この部分は後ほど詳しく述べます)

今回はここまでです。