外部RESTをOutSystemsのActionとして扱う機能を利用してみます。
対象は、livedoorのお天気Webサービス。
地域を指定するIDをクエリストリングにつけてGETすることでJSON形式の天気予報を返してくれます。
OutSystemsでRESTのアクションを定義
Service Studioで、Logic>Integrations>RESTを右クリックして、「Consume REST API…」を選択。
swaggerファイルを指定して一気に設定する方法もありますが、ファイルがないので、個別に定義することにします。下の図でいうと左側。「ADD SINGLE METHOD」を利用します。
GETメソッドのAPIなのでURLだけ指定します。
URL (パラメータとして地域を指定するIDを受け取る指定)
http://weather.livedoor.com/forecast/webservice/json/v1?city={cityId}
ダイアログのGETの右隣に上記URL。Testタブに{}で指定したパラメータ名が出てくるので、livedoorのサイトでサンプルとして表示されている400040を設定して「TEST」ボタンをクリック。
サーバで実際にリクエストを投げて、結果をResponseに表示してくれます。
COPY TO RESPONSE BODY(TESTボタンの下)をクリックしてOKすると、結果のJSON構造を解析して、OutSystems内のStructureとして定義されました。
APIはGetJsonアクションとしてOutSystems内に定義され、入力変数が{}で囲ったクエリストリング、出力変数が上記の解析結果です。
動作確認
適当な画面のPreparationに作成されたGetJsonをドロップし、適当なcityIdを設定したところ(cityId=410020を指定しました)。
このように一般のActionであるかのように処理に組み込めます。
本来であれば、ユーザが選択した地域のIDを渡したりするところですが、ここではテストなので固定値にしています。
livedoorのページ内にレスポンスフィールドとしてAPI結果構造が示されていますが、この通りの方法で取得結果にアクセスできます。
例えば、livedoorのページ内で、descriptionの内側に示されているtext(天気予報の文章による概略を示す項目)にアクセスするには、「GetJson.Response.Description.Text」のようにします。