以前にlivedoorのお天気WebサービスでOutSystems10の外部REST API利用機能を確認しました。
OutSystemsから呼び出されるAPIを作っていて、同じREST APIでレスポンスの形式が異なるときに対応できるかが気になったので確認することにします。
以前お天気Webサービスから作ったアクション
以下の記事を参照。
OutSystemsでlivedoorお天気Webサービスを呼んで見る
ここで作ったアクションは、APIが返す全レスポンスをそのまま読む形式で作成してあります。
同じAPIに別の利用方法のアクションを定義
リクエストはcityパラメータしかなく、これを固定にする使い方はしないと思われるので、今回はリクエストは2つのアクションで共通とし、レスポンスの形式だけ変えてみます。
前回と同じく、Logic>Integrations>RESTを右クリックして「Consume REST API」→「ADD SINGLE METHOD」と選択。
やり方は前回(上の記事)と同じですが、最後に、「BODY」タブに貼り付けられたJSONから特定のプロパティ(以下の例ではCopyright)だけ残してみます。
JSONでは、値を空にしてありますが、実際にはサービスから帰ってきた値が入っています。
{ "copyright": { "provider": [ { "link": "", "name": "" } ], "link": "", "title": "", "image": { "width": , "link": "", "url": "", "title": "", "height": } } }
以下のように無事追加されました。同じAPIから以前追加済みなので、今回追加したアクションは末尾に「2」がついています。
動作確認
これも前回と同じく適当なスクリーンのPreparationでGetJson(前回登録した完全版レスポンスのアクション)とGetJson2(今回登録した部分レスポンスのアクション)両方を実行させました。
Expressionを2つおいて取得結果を確認しましたが、無事に動作しています。
以上から、利用するAPI1つを2つ以上の別の定義のアクションに紐づけて利用することはOutSystemsで可能のようです。この結果は直感に沿う結果ですが、念の為確認してみました。
Application Object count記述によるとAOに該当する要素として、
API/Service operations: Methods from web services, REST APIs or integration connectors that you consume or expose.
なので、AOは多分余分に消費してしまいますね。その点は注意が必要そうです。