1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【ServiceNow】Scripted REST APIを使う

Posted at

目的

「Scripted REST API」機能の使い方を簡単にメモする。

手順

  1. システムWebサービス > スクリプト利用Webサービス > Scripted REST APIs > 新規 を押下する。

  2. [名前]と[API ID]を入力して、保存する。
    ※[API ID]は、[名前]の入力値に応じて自動で補完される
    WS-000000 (2).jpg

  3. RESTサービスレコードができる。
    WS-000001 (2).jpg
    中央には3つのセクションがあり、追加設定もできる。

    • セキュリティ:デフォルトACLの設定
    • コンテンツネゴシエーション:APIリクエスト/レスポンスのサポートフォーマットの定義
    • ドキュメント:APIの説明など
  4. 関連リスト「リソース」の 新規 を押下する。

  5. RESTリソースレコードが開く。
    WS-000002.JPG
    主な項目は以下。

    項目 説明
    名前 RESTリソースの名前
    HTTPメソッド 処理内容に応じてGETやPOST等を選択
    相対パス 処理内容に応じて相対パスを設定可
    スクリプト 処理内容を定義
  6. 処理内容に応じて各種項目を設定して、保存する。
    ▼処理例 
    電話番号をクエリパラメータに含めてGETリクエストすると、アカウントおよび連絡先テーブルの電話番号に合致するレコードの名前部分が返却されるAPIを作ってみる。
    WS-000011 (2).jpg
    ・任意の[名前]を設定
    ・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);
    
  7. 試してみる
    ・RESTリソースの詳細画面下部に関連リンクがあるので、そこからREST API Explorerへアクセスできる。
    WS-000006.JPG
    ・遷移後、クエリパラメータを設定する。
    WS-000007 (2).jpg
    ・クエリパラメータ入力後、送信ボタンを押下する。
    WS-000008 (2).jpg
    ・送信の結果、200 OK で取得に成功。
    WS-000009 (2).jpg
    ・アカウントで1件、連絡先で2件ヒット。
    WS-000012.JPG
    ・実際のアカウント、連絡先テーブルの状態と合致している。
    WS-000005.JPG
    WS-000004.JPG

参考

・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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?