OutSystems 11の頃にConsume REST APIのカスタマイズを試してみるでみた方法で、Consume REST APIの通信にカスタマイズを加えられる。
ここでは、その中でもBase URLの書き換えについて見ていく。
環境情報
ODC Studio(Version 1.4.11)
実行時にBase URLを書き換える方法
Consume REST APIのOn Before Requestを使う。作成するには、Consume REST APIのOn Before Request右のドロップダウンリストを展開し、「New OnBeforeRequest」を選択する。
OnBeforeRequest Actionでは、Output ParameterのCustomizedRequestを編集することで、対応するHTTPS通信内容の書き換えを行える。
デフォルトでは、CustomizedRequestにRequestをAssignしてある。後続処理で、CustomizedRequestを書き換えればよい。
書き換えるのは主に以下のAttribute。
- Base URL: 「https://<ホスト名>/<App名>/rest/<REST API名>」が入っている
- URLPath: 「/<REST API Method>」
サンプル実装
ホスト名部分を書き換えるなら、OnBeforeRequestの実装を以下のようにする。
Ifの部分でクエリストリングの特定パラメータをチェックし、特定の値のときだけBase URLを書き換える流れ。
ホスト名書き換えには、標準APIのHTTP/Http_RequestDomainを利用している。第1引数で指定した変換対象URLのホスト部分を第2引数(ここでは私のブログのホスト)で置き換えたものを返す。
なお、ポート番号を含むURLの書き換えにはこのActionは使えず、自分で変換ロジックを書かないといけない点に注意。
動作確認
ホスト名書き換えのリクエストを行ったあとで、TracesでConsume REST APIのHTTPリクエストを確認した。以下のように元のリクエストのホスト部分を書き換えたURLにアクセスしている(適当なホストに書き換えているので、該当パスがなくHTTP Statusは404)。
用途
例えば、接続先のREST APIが同質のものが複数あり、入力条件やSettingに応じて接続先を切り替えたいときに使える。
なお、接続先の数が固定的であれば、この方法よりは、アーキテクチャパターンのTransparency Patternを使ったほうが良いだろう。