前提
OS:macOS Big Sur 11.5.2
ブラウザ:Google Chrome
バージョン:Rome
PDIの作成や日本語化は済ませてある状態での記事です。仕事でRESTメッセージを使うことになったので記事にします。
目標
スケジュールジョブを実行し、RESTメッセージで定義した関数を呼び出しAPIにリクエストを送る。今回はGETとPOSTのリクエストで試したいと思います。
RESTメッセージ
アプリケーションナビゲーターの
システム Web サービス > REST メッセージ
をクリックします。
「新規」をクリックして必要な情報を入力したら「送信」をクリックします。
今回APIは httpbin.org を使います。
RESTメッセージ関数
作成したRESTメッセージのレコードを開くと、関連リストの「REST メッセージ関数」に「Default GET」が自動生成されています。
名前変えてエンドポイントもGET用に変更します。
※REST APIならGETとPOSTでエンドポイントは変わらないと思いますが、今回はhttpbinを使うので変更します。
「HTTP要求」タブからヘッダーやパラメーターをセットできます。今回はスクリプトでパラメーターの値をセットしたいので ${variable} の形式で設定します。
新しく関数を作るには、RESTメッセージのレコードを開いて関連リストの「REST メッセージ関数」の「新規」をクリックして作成します。今回はGETに加えてPOSTも試したいので新規作成します。
POSTリクエストのボディは「HTTP要求」タブの「コンテンツ」に入力します。ここもスクリプトでセットしたいので ${variable} の形式で設定します。
スケジュールジョブからRESTメッセージ関数を実行
スケジュールジョブからRESTメッセージ関数で定義した関数を実行し、レスポンスボディをログに出力し、成功を確認できました。
スクリプトを実行するスケジュールジョブは、アプリケーションナビゲーターの
システムスケジューラ > Scheduled Jobs
をクリックし、「新規」→「選択したスクリプトを自動実行」で作れます。
GETリクエスト
コード
var r = new sn_ws.RESTMessageV2('テスト', 'GETリクエスト'); r.setStringParameterNoEscape('value1', 'test1'); var response = r.execute(); var responseBody = response.getBody(); gs.info('responseBody : ' + responseBody);
ログ
responseBody : { "args": { "param1": "test1" }, "headers": { "Host": "httpbin.org", "User-Agent": "Jakarta Commons-HttpClient/3.1", "X-Amzn-Trace-Id": "Root=1-61f143d9-659d2fbf42f9db30492dc5a1", "X-Snc-Integration-Source": "7ac77dbfdb7ba3000ae3ac44d49619e6" }, "origin": "149.96.6.8", "url": "https://httpbin.org/get?param1=test1" }
POSTリクエスト
コード
var body = { param1: "test1" }; var r = new sn_ws.RESTMessageV2('テスト', 'POSTリクエスト'); r.setStringParameterNoEscape('body', JSON.stringify(body)); var response = r.execute(); var responseBody = response.getBody(); gs.info('responseBody : ' + responseBody);
ログ
responseBody : { "args": {}, "data": "{\"param1\":\"test1\"}", "files": {}, "form": {}, "headers": { "Content-Length": "18", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "Jakarta Commons-HttpClient/3.1", "X-Amzn-Trace-Id": "Root=1-61f14723-1f0c7d5042d45f1c76358146", "X-Snc-Integration-Source": "7ac77dbfdb7ba3000ae3ac44d49619e6" }, "json": { "param1": "test1" }, "origin": "149.96.6.8", "url": "https://httpbin.org/post" }