[OutSystems]Consume REST APIのカスタマイズを試してみる
OutSystemsから、Server Actionであるかのように外部のREST APIを呼べるようにするConsume REST APIの機能の話題です。
REST APIを呼ぶ直前に処理を挟むOn Before Requestというタイミングと、REST APIから処理が帰ってきた直後に処理を挟むOn After Responseというタイミングがあります。
ドキュメント
この項目は記述がだいぶ薄いですが、以下のページが該当します。
シンプルなカスタマイズ
OnBeforeRequest
Consume REST APIのメソッドに実際にHTTP通信を送信する直前に動作し、リクエストを書き換えできる機能です。
REST APIのOn Before Requestプロパティの「New OnBeforeRequest」を選択すると、対応するActionが自動生成されます。
Requestに入っているのが元々の値で、これをカスタマイズした値をCustomizedRequestに設定することで上書きできます。
パラメータの属性
現時点(2021/3/16)ではドキュメントに記述がないので、各属性について観察した結果をまとめておきます。
名前とデバッガで止めて確認した内容をまとめると以下のようになります。
属性名 | 型 | 内容(推測) |
---|---|---|
BaseURL | Text | 呼び出すAPIのURL(クエリストリングは含まない) |
URLPath | Text | APIメソッドの相対パス |
HTTPMethod | Text | HTTPメソッド。GETとかPOSTとか |
RequestText | Text | HTTPリクエストボディ |
RequestBinary | BinaryData | HTTPリクエストボディ(バイナリ表現) |
URLQueryParameters | List(NameとValue) | クエリストリングのリスト |
Headers | List(NameとValue) | ヘッダのリスト |
値を上書きしてみる
ここではわかりやすいRequestTextの書き換えをやってみます。
これはHTTPリクエストボディの値が入る属性であるため、POSTでリクエストするメソッドでテスト。
Input Parameterで整数値を受取り、それに4をかけた値を返すREST APIを別途用意します。
そのAPIをConsumeして、さらにOnBeforeRequestを追加。RequestTextの末尾に1を追加(文字列として"1"を結合)する処理を足してどうなるか確認してみました。
出力値(OnBeforeRequest修正後)
想定通り34 * 4 = 136 -> 341 * 4 = 1364になっています。
OnBeforeRequestの修正後ロジック
CustomizedRequestの値は、OnBeforeRequestが始まった段階では空なので、一旦RequestをAssignしたほうがよさそうです。
その後で目当てのCustomizedRequest.RequestTextにAssignします。
CustomizedRequest.RequestText = CustomizedRequest.RequestText + "1"
OnBeforeRequestで変更できないパターン
この方法では一部行えない変更があると書いてあります。
以下はドキュメントからの引用です。
このシンプルなカスタマイズ方法では、HTTPヘッダーを追加することや値を変更することはできますが、既存のヘッダーを削除することはできません。HTTPヘッダーを削除する場合は、OutSystems REST Extensibility APIを使用する必要があります。詳細については、「高度なカスタマイズ」をご覧ください。
ヘッダーから項目を削除することができないらしいので試してみます。
OnBeforeRequestを以下のように変更してみました。
ヘッダの先頭を削除しています。
デバッガで止めてみると、ヘッダの先頭であるUser-Agentが削除されているのがわかります。
ところが、Consumeで呼びに行く先のExpose REST APIで詳細なログを出してみると、消したはずのUser-Agentが記録されていました。ドキュメントの記述と照らし合わせると、削除しても無視されるということでしょうか。
ドキュメントで言う、「高度なカスタマイズ」に対応しているのは、「OnBeforeRequest(Advanced)」です。.NETで操作できるREST Extensibility APIというものがあってそこで「高度なカスタマイズ」ができるとのこと。
OnAfterResponse
パラメータの属性
属性名 | 型 | 内容(推測) |
---|---|---|
StatusCode | Integer | HTTPステータスコード。200とか404。整数値なのに注意 |
StatusLine | Text | HTTPレスポンスの先頭に出てくるやつです。「 」 |
ResponseText | Text | HTTPレスポンスボディ |
ResponseBinary | BinaryData | HTTPレスポンスボディ(バイナリ表現) |
Headers | List(NameとValue) | ヘッダのリスト |
Author And Source
この問題について([OutSystems]Consume REST APIのカスタマイズを試してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/jyunji_watanabe/items/f1b0c225b9858e0cf5da著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .