目的
「Scripted REST API」機能の使い方を簡単にメモする。
手順
-
システムWebサービス > スクリプト利用Webサービス > Scripted REST APIs > 新規 を押下する。
-
RESTサービスレコードができる。
中央には3つのセクションがあり、追加設定もできる。- セキュリティ:デフォルトACLの設定
- コンテンツネゴシエーション:APIリクエスト/レスポンスのサポートフォーマットの定義
- ドキュメント:APIの説明など
-
関連リスト「リソース」の 新規 を押下する。
-
項目 説明 名前 RESTリソースの名前 HTTPメソッド 処理内容に応じてGETやPOST等を選択 相対パス 処理内容に応じて相対パスを設定可 スクリプト 処理内容を定義 -
処理内容に応じて各種項目を設定して、保存する。
▼処理例
電話番号をクエリパラメータに含めてGETリクエストすると、アカウントおよび連絡先テーブルの電話番号に合致するレコードの名前部分が返却されるAPIを作ってみる。
・任意の[名前]を設定
・HTTPメソッドはGET
・相対パスはとりあえず/namesとした
・スクリプトは以下(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) { //クエリパラメータ[phone]の取得 var queryParams = request.queryParams; var phoneQueryVal = queryParams.phone; //初期化 var bodyArray = []; var body = {}; //アカウントテーブルからの取得 var Acc_GR = new GlideRecord("customer_account"); Acc_GR.addQuery('phone', phoneQueryVal); Acc_GR.query(); while (Acc_GR.next()) { body = {}; body.table = "customer_account"; body.name = Acc_GR.getValue("name"); bodyArray.push(body); } //連絡先テーブルからの取得 var Con_GR = new GlideRecord("customer_contact"); Con_GR.addQuery('phone', phoneQueryVal); Con_GR.query(); while (Con_GR.next()) { body = {}; body.table = "customer_contact"; body.name = Con_GR.getValue("first_name") + Con_GR.getValue("last_name"); bodyArray.push(body); } //返却 response.setBody(bodyArray); })(request, response);
-
試してみる
・RESTリソースの詳細画面下部に関連リンクがあるので、そこからREST API Explorerへアクセスできる。
・遷移後、クエリパラメータを設定する。
・クエリパラメータ入力後、送信ボタンを押下する。
・送信の結果、200 OK で取得に成功。
・アカウントで1件、連絡先で2件ヒット。
・実際のアカウント、連絡先テーブルの状態と合致している。
参考
・RESTAPIRequest - Scoped, Global | ServiceNow Developers
https://developer.servicenow.com/dev.do#!/reference/api/tokyo/server/sn_ws-namespace/c_RESTAPIRequest?navFilter=RESTAPI
・RESTAPIRequestBody - Scoped, Global | ServiceNow Developers
https://developer.servicenow.com/dev.do#!/reference/api/tokyo/server/sn_ws-namespace/c_RESTAPIRequestBody?navFilter=RESTAPI
・RESTAPIResponse - Scoped, Global | ServiceNow Developers
https://developer.servicenow.com/dev.do#!/reference/api/tokyo/server/sn_ws-namespace/c_RESTAPIResponse?navFilter=RESTAPI
・ServiceNow - Scripted REST APIの作成 - Qiita
https://qiita.com/htshozawa/items/4d32e77bb4fd20358695
・ServiceNowにWebhookでデータ連携 - Qiita
https://qiita.com/sota-suzuki/items/499fa09d8e88761671ae