バージョン:Rome
REST データ連携

送信 REST データ連携

記事 (1/23)

ServiceNow における送信データ連携の目標

このモジュールでは、次のことを学習します。

  • 送信 REST メッセージの作成
    • エンドポイント
    • ヘッダー
    • パラメーター
    • REST メソッド
  • 送信 REST メッセージのテスト
    • 代替変数
    • HTTP ステータス
    • 応答本文
  • 送信 REST メッセージのデバッグ
    • ステータスと応答内容を調べる
    • ログレベルの設定
    • 送信 HTTP 要求ログの使用
  • [スクリプト使用のプレビュー] を使用して、送信 REST メッセージを呼び出すサーバーサイド JavaScript を作成する
  • 応答本文からのデータを解析するサーバーサイド JavaScript を記述する

記事 (2/23)

この学習モジュールについて

重要:この学習モジュールの内容は、Quebec ServiceNow リリース用に最後に更新されたもので、Rome リリースでは更新されていません。Rome リリースとこの学習モジュールのコンテンツとの間に違いが見られる場合があります。

Global アプリケーションは、アプリケーション作成の基になる概念とプロセスを紹介し、デモンストレーションするために、この学習モジュール全体で使用されます。受講者は Global アプリケーションを構築しません。

実習では、IPLookup アプリケーションを開発します。

演習は、次の 3 つの方法で示されます。

  • ナビゲーションペインの [演習] アイコン。
  • ページ上部の [演習] アイコンと「演習」という単語。
  • ページタイトルの「演習」または「課題」という単語。

ナビゲーションとページタイトルに、強調表示された演習ページのアイコンと演習プリフィックスが表示された、演習ページの上部。

IPLookup アプリケーションを使用すると、ユーザーは IP アドレスに関する情報を要求できます。

記事 (3/23)

Web サービスコンシューマーとしての ServiceNow

Web サービスにより、アプリケーションはネットワーク経由で他のソフトウェアアプリケーションに接続し、プロバイダー (サーバー) とコンシューマー (クライアント) の間で情報を交換することができます。

Web サービスコンシューマー (クライアント) が Web サービスプロバイダー (サーバー) に情報を要求します。Web サービスプロバイダーが要求を処理し、ステータスコードと応答本文を返します。応答本文が返されると、Web サービスコンシューマーは応答本文から情報を抽出し、抽出されたデータに対してアクションを実行します。

ServiceNow は、サードパーティプロバイダーやその他の ServiceNow インスタンスからの Web サービスを消費できます。

サードパーティの Web サービスは、次のような情報を提供できます。

  • 位置情報座標
  • 株価情報
  • 財務データ
  • Inventory
  • 天気データ
  • 言語翻訳
    ServiceNow から外部 Web サービスプロバイダーへの要求

記事 (4/23)

送信 REST メッセージ

ServiceNow は、REST を介して外部 Web サービスとやり取りする方法の詳細を REST メッセージレコードに保存します。REST メッセージレコードには次のものが含まれます。

  • エンドポイント
  • 認証
  • HTTP 見出し
  • HTTP メソッド

送信 REST メッセージを使用すると、開発者は Web サービスをテストし、応答本文を表示できます。

送信 REST メッセージを構成してテストすると、任意のサーバーサイドスクリプトから呼び出すことができるようになります。

送信要求レコード

記事 (5/23)

送信 REST メッセージの作成

送信 REST メッセージを作成するには、Application Navigator を使用して [システム Web サービス] > [送信] > [REST メッセージ] を開くか、Studio で REST メッセージアプリケーションファイルを追加します。

新規 REST メッセージの構成

  • 名前REST メッセージのわかりやすい名前。この値は、スクリプトから送信 REST メッセージを呼び出すときに使用されます。
  • エンドポイント:この REST メッセージが送信されるエンドポイント。エンドポイントの値には、${variable} 形式の変数を含めることができます。
  • 認証タイプ:使用する認証のタイプ (該当する場合) と、ユーザー資格情報を含むプロファイルレコード。送信 REST では、基本認証と OAuth 2.0 がサポートされます。ここで構成した認証は、関連付けられた HTTP メソッドに継承されます。各メソッドで認証を構成すると、メッセージ レベルの任意の認証設定を上書きできます。
  • 相互認証を有効にします:Web サービスプロバイダーとコンシューマーが通信する前に互いに認証を行うことを求める場合に選択します。送信 REST では、基本認証でのみ相互認証がサポートされます。
  • HTTP ヘッダー:HTTP ヘッダーの埋め込みリストの行をダブルクリックして、ヘッダーの [名前][値] を定義します。サポートされるヘッダーや必要なヘッダーは、Web サービスプロバイダーによって決定されます。HTTP ヘッダーフィールドのリストについては、HTTP ヘッダーフィールドのリストを参照してください。

記事 (6/23)

送信 REST メッセージでの認証

Web サービスプロバイダーによって必要な認証のタイプは異なります。送信 REST では、次の認証形式がサポートされます。

  • 認証なし
  • ユーザー名とパスワードを使用する基本認証
  • OAuth プロバイダーとプロファイルを使用する OAuth 2.0
  • 相互認証

認証なし

一部の公開 Web サービスは、認証なしで制約のない情報を配布しています。認証を必要としない公開 Web サービスの場合は、送信 REST メッセージの [認証タイプ] フィールドを [認証なし] に設定します。

資格情報を必要としない公開 Web サービスには [認証なし] を選択します

基本

基本認証タイプは、ユーザー名とパスワードを Web サービスに渡します。基本認証が必要な Web サービスの場合は、送信 REST メッセージの [認証タイプ] フィールドの値を [基本] に設定してから、[基本認証プロファイル] を選択します。

[リストから参照] ボタンを使用してリストから基本認証プロファイルを選択して設定します

基本認証プロファイルは、名前ユーザー名パスワードで構成されます。

基本認証プロファイルレコードには、名前、ユーザー名、パスワードが含まれます

Application Navigator に「sys_auth_profile_basic.list」と入力して、基本認証プロファイルを編集または新規作成します。

OAuth

OAuth は、ユーザーにパスワードを指定せずに API へのアクセスを提供するインターネット標準です。OAuth のセットアップについては、RESTMessageV2 データ連携の OAuth2 認証の設定方法に関するブログ投稿を参照してください。

相互認証

相互認証では、Web サービスプロバイダーとコンシューマーが通信する前に互いに認証を行う必要があります。相互認証は、アプリケーションレベルの認証である他の認証オプションとは異なり、プロトコル/ソケットレベルの認証です。相互認証は、他の認証メカニズムと組み合わせて使用できます。相互認証を有効にするには、[相互認証を有効にします] オプションを選択してから、プロトコルプロファイルを選択します。

リストからプロトコルプロファイルを選択します

相互認証プロファイルを定義するには、Application Navigator を使用して [システムセキュリティ] > [プロトコルプロファイル] を開きます。

このオプションは、MID Server を使用する Web サービスでは使用できません。

演習 (7/23)

演習:送信 REST メッセージを作成する

この演習では、IPLookup と呼ばれるアプリケーションを作成します。ipinfo.io 公開 Web サービスを使用するこのアプリケーションに、送信 REST メッセージも追加します。

注意:PDI が自動的に App Engine Studio を開く場合は、PDI にアクセスするために使用するユーザーロールを変更する必要があります。演習を完了するには、[管理者] ユーザーロールに切り替えます

準備 - API ドキュメントの確認

ipinfo.io にアクセスし、何が API に送信され、何が返されるのかについて、ドキュメントを確認してください。

IPLookup アプリケーションの作成

  1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムアプリケーション] > [Studio] を開きます。

  2. 新しいブラウザータブに Studio が開きます。簡単に移動できるように、ServiceNow ブラウザーのメインタブは開いたままにしておきます。

  3. [アプリケーションを選択] ダイアログで、[アプリケーションの作成] ボタンをクリックします。

  4. Guided App Creator のようこそ画面が表示された場合は、[始めましょう] ボタンをクリックします。

    注意:Microsoft Edge または Internet Explorer を使用している場合は、従来のアプリケーションクリエーターでしか作業できない可能性があります。Safari を使用している場合、Guided App Creator を使用するにはバージョン 12 以降が必要です。Guided App Creator で作業するには、別のブラウザーを使用してください。

  5. 新しいアプリケーションを構成します。

      名前 IPLookup
      説明 IP アドレスルックアップ
      詳細設定 スコープ対象
      スコープ (この値は、自動的に入力されます)
  6. [作成] ボタンをクリックします。

  7. [Studio で続行 (詳細)] リンクをクリックします。

  8. [アプリケーションを選択] ダイアログで、IPLookup リンクをクリックし、編集するアプリケーションを開きます。

送信 REST メッセージの作成

  1. REST メッセージの作成

    1. Studio で [アプリケーションファイルを作成] リンクをクリックします。
    2. [フィルター...] フィールドで、「REST」と入力するか、左ペインのカテゴリから [送信データ連携 (Outbound Integrations)] を選択します。
    3. 中央ペインからファイルタイプとして [REST メッセージ] を選択し、[作成] ボタンをクリックします。
  2. REST メッセージの構成

      名前 IPInfo
      説明 IP アドレスに関する情報 (Information about IP addresses)
      エンドポイント https://ipinfo.io/
      認証タイプ 認証なし

    IPInfo メッセージ

  3. [送信] ボタンをクリックして REST メッセージを保存します。

注意:ipinfo.io 公開 Web サービスは認証を必要としません。

記事 (8/23)

HTTP メソッド

HTTP メソッドは、情報の取得やレコードの更新など、リソースに対して実行するアクションを定義します。新しい REST メッセージが初めて保存されるときに、ServiceNow は REST メッセージの情報に基づいて HTTP メソッドを作成します。

ServiceNow はデフォルト GET HTTP メソッドを作成します

HTTP メソッド名をクリックして編集するメソッドを開くか、[新規] ボタンをクリックして HTTP メソッドを作成します。利用可能な HTTP メソッドは次のとおりです。

  • GET
  • POST
  • PUT
  • PATCH
  • 消去

記事 (9/23)

メソッドのエンドポイント

HTTP メソッドのエンドポイントを構成するには、Web サービスプロバイダーの API ドキュメントを参照してください。たとえば、IEX Cloud の API リファレンスには、API のベース URL が記載されています。

iextrading.com の API ドキュメントでは、エンドポイントのベース URL を https://api.iextrading.com/1.0 としています。

iextrading.com の Quote API の場合、ドキュメントに次の構文が記載されています。

/stock/{symbol}/quote

送信 REST メッセージの有用性を高めるには、会社の記号をエンドポイントにハードコーディングするのではなく、記号を動的にします。エンドポイントの動的な部分を ${ } で囲みます。

https://api.iextrading.com/1.0/stock/${ }/quote

記事 (10/23)

メソッド認証と HTTP 要求

認証

デフォルトの場合、HTTP メソッドは送信 REST メッセージ (親) から認証設定を継承します。親の認証と異なる場合は、認証タイプを変更します。メソッドの認証フィールドは、送信 REST メッセージのフィールドと同じです。

デフォルトの場合、認証は親から継承されます

HTTP 要求 - MID Server

消費する Web サービスが社内ネットワーク上にあり、インターネットを使用してアクセスできない場合は、MID Server を使用して Web サービスに接続します。[MID Server を使用] フィールドで MID Server を選択します。

HTTP 要求 - HTTP ヘッダー

[HTTP ヘッダー] 埋め込みリストの行をクリックして、ヘッダーの [名前][値] を定義します。サポートされるヘッダーや必要なヘッダーは、Web サービスプロバイダーによって決定されます。HTTP ヘッダーフィールドのリストについては、HTTP ヘッダーフィールドのリストを参照してください。

HTTP 要求 - HTTP クエリパラメーター

HTTP クエリパラメーターを定義するには、[新規行を挿入...] というテキストをダブルクリックし、パラメーターの [名前][値] を指定します。定義するクエリパラメーターについては、API のドキュメントを参照してください。たとえば、IEX Cloud のサイトでは、Quote API のオプションのクエリパラメーターを定義します。

displayPercent パラメーターはオプションです。

IEX Cloud のサイトでは、API 要求に使用する空きトークンも必要です。このトークンはクエリパラメーターとして渡されます。

トークンのドキュメント。

クエリパラメーターをエンドポイントに追加します。

displayPercent パラメーターが true に設定されており、トークン値が構成されています。

HTTP クエリパラメーターは、実行時にエンドポイントに追加されます。構文は「エンドポイント + ? + クエリパラメーター」です。

クエリパラメーターはエンドポイントに追加されます

演習 (11/23)

演習:HTTP メソッドを構成する

この演習では、ipinfo.io 公開 Web サービスから IP アドレス情報を取得するように HTTP メソッドを構成します。

GET メソッドの構成

  1. 前の演習の Studio が開いていない場合は、ServiceNow ブラウザーのメインウィンドウで Application Navigator を使用して [システムアプリケーション] > [Studio] を開きます。

  2. IPLookup アプリケーションをクリックします。

  3. 前の演習で REST メッセージ を保存したときに、関連する HTTP メソッドが作成されました。関連リストの HTTP メソッドを開きます。

    1. アプリケーションエクスプローラーで、[送信データ連携 (Outbound Integrations)] > [REST メッセージ] > [IPInfo] を開きます。

    2. [デフォルト GET (Default GET)] をクリックします。

      デフォルト GET (Default GET) メソッド

  4. HTTP メソッドを設定します。

      名前 GetIPInfo
      HTTP メソッド GET
      エンドポイント https://ipinfo.io/${ipaddress}/json
  5. [更新] ボタンをクリックして、変更を保存します。

構成済みの送信 REST メッセージ

注意:ipinfo.io Web サービスは、認証、ヘッダー、クエリパラメーターを必要としません。

記事 (12/23)

HTTP メソッドのテスト

送信 REST メッセージの HTTP メソッドを構成したら、テストを実行して、要求が有効であり、応答が期待どおりに返されることを確認できます。

代替変数

HTTP メソッドで定義された変数には、テストの実行のための値が必要です。[変数の自動生成] 関連リンクをクリックして、変数を [代替変数] リストに自動的に追加します。[代替変数] リストに自動的に追加されない変数の場合は、[新規] ボタンをクリックして変数を手動で定義します。

シンボル変数のテスト値は「NOW」です

  • 名前:変数の名前。HTTP メソッドの変数名と完全に一致する必要があります。
  • タイプ:特殊文字をエスケープするオプション。送信されるデータに特殊文字が含まれている場合 (パイプ文字の | など)、[タイプ] の値を [XML] に設定します。
  • テスト値:テスト時に変数に使用する値。

テストの実行

HTTP メソッドをテストするには、[テスト] 関連リンクをクリックします。

[テスト] 関連リンクをクリックします

テスト結果は [テスト実行] 関連リストで確認できます。

テスト結果には HTTPSStatus と応答本文が含まれています

[応答] で、予期したデータが受信されたことを確認します。

注意HTTP ステータスはトランザクションのステータスを示すものであり、目的の応答が受信されたことを示すものではありません

演習 (13/23)

演習:HTTP メソッドをテストする

この演習では、GetIPInfo HTTP メソッドをテストし、テスト結果を確認します。

準備

選択した戦略を使用して IP アドレスを決定します。IP アドレスの検索方法がわからない場合は、WhatIsMyIPAddress または IPChicken をお試しください。IP アドレスをメモしておきます。

代替変数の作成

  1. 前の演習で開いていない場合は、編集対象の GetIPInfo HTTP メソッドを開きます。
  2. [エンドポイント] フィールドを調べて、エンドポイント URL に含まれる変数を確認します。
  3. [代替変数] 関連リスト (タブ) までスクロールし、定義済みの代替変数がないことを確認します。
  4. [変数の自動生成] 関連リンクをクリックします。
  5. 自動作成された ipaddress 変数に値を追加します。ipaddress 変数が自動作成されなかった場合は、[代替変数] 関連リスト (タブ) で [新規] ボタンをクリックし、手動で追加します。
    1. [テスト値] 列をダブルクリックします。
    2. IP アドレスを入力し、[保存 (Enter)] ボタン ([保存 (Enter)] ボタンは、編集用に開いた [テスト値] フィールドの右側にあります。) をクリックします。
      ipaddress 代替変数には、8.8.8.8 のようなテスト値が必要です。

テストを実行し、テスト結果を確認する

  1. ipaddress 代替変数を手動で作成する必要がある場合は、テストする前に、ブラウザーの再ロードボタンを使用して GetIPInfo メソッドフォームを再ロードします。

  2. テストを実行するには、[テスト] 関連リンクをクリックします。

  3. テストが終了したら、結果画面を確認します。テスト結果は例のようになります。[エンドポイント] には IP アドレスが含まれ、[応答] の値は異なる場合があります。

    応答には、市区町村や国などの情報が含まれます

  4. HTTP ステータス値は 200 ですか?

  5. [応答] にはどのような情報が表示されますか?

課題 - 特定のフィールドデータの要求

ここでの課題は、GetIPInfo HTTP メソッドを変更して、このメソッドが ipinfo.io API から特定のフィールドのデータを要求できるようにすることです。『ipinfo.io 開発者ガイド』の応答のフィルタリングに関するセクションを参照してください。GetIPInfo HTTP メソッドは、org、city、geo、または json という値を受け入れる必要があります。[テスト] 関連リンクを使用して、ソリューションをテストします。

課題ソリューション

エンドポイントに新しいパラメーターを追加します。

記事 (14/23)

HTTP メソッドのデバッグ

REST HTTP メソッドをデバッグするときに最初に確認するのは、テスト結果ページです。示されている例では、[HTTP ステータス] に、エンドポイントが見つからなかったことを示す 404 が返されています。[応答] には、エラーの原因に関する詳細情報が示されています。

テスト実行で 404 の HTTP ステータスが返されました。

送信 HTTP 要求のシステムログ

より詳細なデバッグが必要な場合は、送信 HTTP 要求のシステムログを使用します。まず、ログに含める情報の量を設定します。HTTP メソッド定義の [HTTP ログレベルを設定] 関連リンクをクリックして、ログレベルを指定します。

  • 基本:最小量のデバッグ情報
  • 昇格:最小量より多いデバッグ情報
  • すべて:最大量のデバッグ情報

ログレベルとして、[基本]、[昇格]、または [すべて] を選択します。

ログレベルを設定した後、再度テストしてログを生成します。

Application Navigator を使用して、[システムログ] > [送信 HTTP 要求] を開きます。

基本

[基本] ログレベルは、最小量のデバッグ情報を記録します。

昇格

[昇格] ログレベルは、基本よりも多くの情報を記録します。

すべて

[すべて] ログレベルは、最も多くの情報を記録します。

この例は [要求] タブを示していますが、デバッグ対象によっては他のタブの方が便利な場合があります。

演習 (15/23)

演習:送信 HTTP 要求のシステムログ

この演習では、GetIPInfo HTTP メソッドのログレベルを設定し、送信 HTTP 要求のシステムログを確認します。

ログレベルの設定とログの生成

  1. 前の演習の Studio が開いていない場合は、ServiceNow ブラウザーのメインウィンドウで Application Navigator を使用して [システムアプリケーション] > [Studio] を開きます。
  2. IPLookup アプリケーションをクリックします。
  3. GetIPInfo HTTP メソッドを開いて編集します。
    1. アプリケーションエクスプローラーで、[送信データ連携 (Outbound Integrations)] > [REST メッセージ] > [IPInfo] を開きます。
    2. [HTTP メソッド] セクションで [GetIPInfo] をクリックします。
  4. [HTTP ログレベル] の値を [基本] に設定します。
    1. [HTTP ログレベルを設定] 関連リンクをクリックします。
    2. [HTTP ログレベル] の値が [基本] でない場合は、値を [基本] に設定します。
    3. [OK] ボタンをクリックします。
  5. [テスト] 関連リンクをクリックしてテストを実行し、基本ログを生成します。
  6. GetIPInfo HTTP メソッドに戻り、手順を繰り返して [昇格] および [すべて] ログレベルのログを生成します。

送信 HTTP 要求ログの確認

  1. ServiceNow ブラウザーのメインウィンドウ (Studio ではない) で、Application Navigator を使用して [システムログ] > [送信 HTTP 要求] を開きます。

  2. リスト内のログレコードを開きます。

  3. ログを調べます。

    1. [ログレベル] セクション (タブ) を調べて、レコードのログレベルを確認します。
    2. [要求] セクション (タブ) に切り替えて、内容を確認します。
    3. [応答] セクション (タブ) に切り替えて、内容を確認します。
  4. [次のレコード] アイコンを使用して、ログリスト内の次のレコードに移動します。

    [次のレコード] ボタンはヘッダーの右隅にあります。

  5. レコードのログレベルを決定し、セクション (タブ) を調べて、どのような情報が含まれているかを確認します。

  6. ログの最後のレコードまで、このプロセスを繰り返します。

記事 (16/23)

スクリプト使用のプレビュー

ほとんどの場合、送信 REST メッセージのメソッドで [テスト] 関連リンクを使用して API を呼び出すことは実用的ではありません。HTTP メソッドを構成し、それが期待どおりに機能することを確認した後の最後の開発ステップは、サーバーサイドスクリプトからメソッドを実行することです。

[スクリプト使用のプレビュー] 関連リンクは、API を呼び出すサーバーサイド JavaScript コードスタブを生成します。

[スクリプト使用のプレビュー] 関連リンクは、送信 REST メッセージを呼び出すサーバーサイドコードを作成します

RESTMessageV2 API は、JavaScript を使用して送信 REST メッセージを送信します。

サンプルスクリプトでは、パラメーター名とハードコードされた値を使用して .setStringParameterNoEscape メソッドが渡されます。スクリプトを実装する場合、通常、パラメーターの値は動的に設定されます。例を次に示します。

r.setStringParameterNoEscape('symbol',current.company_ticker);

サンプルスクリプトの構文 sn_ws.RESTMessageV2() は、ServiceNow Express の他のサーバーサイドスクリプトが GlideRecord クラスを表現する場合と同じ方法で RESTMessageV2 を表現しますが、例外があります。GlideRecord クラスは ServiceNow グローバル名前空間の一部であり、スクリプトで名前空間を修飾する必要はありません。

var myObj = new GlideRecord('table_name');

RESTMessageV2 API は sn_ws (Web サービス) 名前空間の一部です。メソッドはすべてのスコープにアクセスできますが、名前空間を先頭に追加せずに RESTMessageV2 を表現しようとすると、グローバル名前空間に API が見つからないためエラーが返されます。名前空間を先頭に追加することで、ServiceNow に API の場所を通知できます。

記事 (17/23)

応答からのデータの解析

[スクリプト使用のプレビュー] ページのサンプルスクリプトには、応答本文と HTTP ステータスコードを取得するコードが含まれています。

var response = r.execute(); var responseBody = response.getBody(); var httpStatus = response.getStatusCode();

[スクリプト使用のプレビュー] スクリプトには、応答からデータを抽出するためのサンプルコードは含まれていません。responseBody 変数には、応答が文字列として含まれています。substring()substr()indexOf() などの JavaScript 文字列メソッドを使用して、responseBody 変数からデータを抽出します。

JSON

json 応答を操作する場合は JSON API を使用します。これにより、JSON フォーマットの文字列が JavaScript オブジェクトに変換されます。グローバルスコープで作業する場合、次のメソッドを使用できます。

  • decode (使用廃止)
  • encode (使用廃止)
  • parse
  • stringify

Stock Quote API スクリプト全体

プライベートスコープ対象アプリケーションで作業する場合、次のメソッドを使用できます。

  • parse
  • stringify

これらのメソッドのその他の使用例については、JSON API ドキュメントを参照してください。

XML

プライベートスコープ対象アプリケーションで XML 応答を操作する場合は、XMLDocument2 API を使用して、応答本文からデータを抽出します。

XMLDocument2 を使用した XML の例

注意:示されている XML の例はデモンストレーション用です。IEX Cloud API の実際のデータに基づくものではありません。

演習 (18/23)

演習:REST メッセージを呼び出すスクリプトを作成する

この演習では、レコード内の IP アドレス値に基づいて IPInfo 送信 REST メッセージを呼び出すスクリプトを作成します。Web サービス応答からのデータを解析して、レコードの [市区町村] フィールドの更新も行います。

準備

  1. テーブルを IPLookup アプリケーションに追加します。

    1. 前の演習で編集対象の IPLookup アプリケーションを Studio で開いていない場合は、ここで開きます。
    2. [アプリケーションファイルを作成] リンクをクリックします。
    3. [フィルター...] フィールドに「テーブル 」というテキストを入力するか、左ペインのカテゴリから [データモデル] を選択します。
    4. 中央ペインからファイルタイプとして [テーブル] を選択し、[作成] ボタンをクリックします。
  2. テーブルを構成します。

      ラベル IPAddressInfo
      名前 (この値は自動的に入力されます)
  3. [送信] ボタンをクリックして、テーブルを保存します。

  4. IPAddressInfo テーブルにフィールドを追加します。

    1. [列] セクション (タブ) までスクロールし、[新規行を挿入...] をダブルクリックします。
    2. IP アドレスを入力します。
    3. [保存 (Enter)] をクリックします。
    4. [タイプ] フィールドをダブルクリックし、「文字列」を検索します。
    5. 結果から [文字列] を選択します。
    6. [保存 (Enter)] をクリックします。
  5. IPAddressInfo テーブルに別のフィールドを追加します。

      列ラベル 市区町村
      タイプ 文字列
  6. [更新] ボタンをクリックします。

    IPAddressInfo テーブルには、デフォルトのフィールドに加えて [市区町村] と [IPAddress] があります。

スクリプト使用のプレビュー

  1. まだ開いていない場合は、編集対象の GetIPInfo HTTP メソッドを開きます。
  2. 関連リンクまでスクロールし、[スクリプト使用のプレビュー] リンクをクリックします。
  3. [REST メッセージスクリプト使用のプレビュー] スクリプトをクリップボードにコピーします。これは、演習の後半で使用する必要があります。

ビジネスルールの作成

  1. IPLookup アプリケーションでビジネスルールを作成します。
    1. [アプリケーションファイルを作成] リンクをクリックします。
    2. [フィルター... (Filter ...)] フィールドに「ビジネス」というテキストを入力するか、左側のペインのカテゴリから [サーバー開発 (Server Development)] を選択します。
    3. 中央ペインからファイルタイプとして [ビジネスルール] を選択し、[作成] ボタンをクリックします。
  2. ビジネスルールを構成します。
      名前 IP アドレスの市区町村の入力 (Populate IP Address City)
      テーブル IPAddressInfo
      詳細 選択済み (オン)
  3. [IP アドレスの市区町村の入力 (Populate IP Address City)] ビジネスルールの [実行タイミング] セクション (タブ) を設定します。
      タイミング 非同期
      挿入 選択済み (オン)
      更新 選択済み (オン)
  4. [送信] ボタンをクリックして、ビジネスルールを保存します。

開発者向けのヒント:Web サービスを呼び出すビジネスルールは非同期である必要があります

ビジネスルールへのスクリプトの追加

注意:この演習では、エンドポイントの 2 番目のパラメーターを specific_field と呼びます。

特定のフィールドは 2 番目のエンドポイントパラメーターです

  1. [IP アドレスの市区町村の入力 (Populate IP Address City)] ビジネスルールで、[詳細] セクション (タブ) に切り替えます。

  2. 前にコピーしたコードスタブを、ビジネスルールの「ここにコードを追加 (Add your code here)」というコメントの後に貼り付けます。

    コメントの後にスクリプトスタブを貼り付けます

  3. スクリプトで specific_field パラメーターの値を ['geo'] に設定します。

  4. スクリプトで ipaddress パラメーターの値を [current.ip_address] に設定します。

    エンドポイントパラメーターの値を設定します

  5. 次のロジックを入力して、応答の市区町村プロパティから IPAddressInfo レコードの [市区町村] フィールドの値を入力し、レコードを更新します。

    json に変換してから市区町村の値を抽出するスクリプトロジックを追加します

  6. コードスタブは、エラーメッセージが国際化されていることを前提としていますが、ここでは国際化されていません。スクロールして、試行結果で見つかったエラーを報告するように catch() ロジックを変更します。

    キャッチロジックを変更します

  7. [更新] ボタンをクリックします。

スクリプトのテスト

  1. (Studio ではなく) ServiceNow ブラウザーのメインウィンドウに切り替えて、ブラウザーウィンドウを再ロードします。これにより、IPAddressInfo テーブルのモジュールが Application Navigator にロードされます。

  2. Application Navigator を使用して [IPAddressInfo] > [IPAddressInfos] を開きます。

  3. [新規] ボタンをクリックします。

  4. <お使いの IP アドレス>[IP アドレス] フィールドに入力します。

    注意IP アドレスが手元にない場合は、WhatIsMyIPAddress または IPChicken をお試しください。

  5. レコードを保存し、フォームページに残しておくには、[他のアクション] メニュー ([他のアクション] メニューは、フォームヘッダーの左側にあります。) をクリックして、[保存] メニューアイテムを選択します。

  6. 非同期ビジネスルールが実行されるまで待ちます。[市区町村] フィールドは、ビジネスルールの実行後に入力される必要があります。

    [市区町村] フィールドが入力されていることを示す例

    質問[市区町村]フィールドの左側の円は何を示していますか?

    回答:円は、現在のユーザーがフォームを表示している間に、スクリプトまたは別のユーザーによってフォームフィールドが更新されたことを示します。

  7. [市区町村] フィールドに値がない場合は、Application Navigator を使用して [システムログ] > [システムログ] > [すべて] モジュールを開き、このビジネスルールの問題をデバッグします。

記事 (19/23)

REST メッセージのスクリプト化

一般的な送信データ連携の場合、開発者はこのモジュールに示されている方法で送信 REST メッセージを定義します。送信 REST メッセージの利点は、フォームベースの UI を使用して API インタラクションを構成、テスト、デバッグできることです。

一部の開発者は、送信 REST メッセージを作成せずにデータ連携全体をスクリプト化することを好みます。示されているスクリプトは、送信 REST メッセージを使用せずに iextrading.com Stock Quote API とのインタラクションを定義しています。

// Create an empty RESTMessageV2 object var getQuote = new sn_ws.RESTMessageV2(); // Set the endpoint getQuote.setEndpoint('https://cloud.iexapis.com/v1/stock/${symbol}/quote'); // Set the HTTP method (get, post, put, patch, delete) getQuote.setHttpMethod('get'); // Set HTTP Query Parameters getQuote.setQueryParameter('displayPercent','true'); getQuote.setQueryParameter('token','INSERT_TOKEN_HERE'); // Set values for endpoint variables getQuote.setStringParameterNoEscape('symbol', current.short_description);

RESTMessageV2 API で REST インタラクションをスクリプト化する際に有用なメソッドとして、他に次のようなものがあります。

  • setRequestHeader()
  • setLogLevel()
  • setStringParameter()
  • setRequestorProfile()
  • setMutualAuth()

メソッドの完全なリストについては、RESTMessageV2 API のドキュメントを参照してください。

演習 (20/23)

演習:「送信 REST データ連携」での作業内容を保存する (オプション)

GitHub リポジトリを使用すると、開発者は個人開発者インスタンス (PDI) の外部で完了した作業を保存できます。後で取得できるように作業を保存するには、ソースコントロールにリンクします。

この演習では、GitHub に新しい IPLookupApp リポジトリを作成し、IPLookupApp アプリケーションを新しいリポジトリに接続して、このモジュールで完了した作業内容を保存します。

GitHub へのログインとリポジトリの作成

  1. github.com Web サイトを開きます。

  2. GitHub アカウントがある場合は、ログインします。アカウントがない場合は、アカウントを作成してログインしてください。

  3. [新規リポジトリ (New repository)] ボタンをクリックして、リポジトリを作成します。

    [新規リポジトリ (New repository)] ボタンをクリックします。

  4. 新しいリポジトリを構成します。

      リポジトリ名 IPLookupApp
      説明 ServiceNow 送信 REST データ連携モジュールからの IPLookup アプリケーション
  5. [リポジトリを作成 (Create repository)] ボタンをクリックします。

  6. IPLookupApp リポジトリが作成されたら、[クリップボードにコピー] ボタンをクリックして https URL をコピーします。

    [クリップボードにコピー] ボタンをクリックします。

IPLookupApp リポジトリへの Studio の接続

  1. GitHub 接続の資格情報レコードを作成します。

    重要:資格情報レコードを作成する必要があるのは 1 回だけです。別の演習で資格情報レコードを既に作成している場合は、この手順をスキップしてください。

    1. Application Navigator を使用して、[接続および資格情報] > [資格情報] を開きます。

    2. [新規] ボタンをクリックします。

    3. [作成する資格情報のタイプは?] リストで、[基本認証資格情報] リンクをクリックします。

    4. 資格情報レコードを設定します。

      1. 名前GitHub 資格情報 (GitHub Credentials) - <お使いの github.com ユーザー名>

      2. ユーザー名<お使いの github.com ユーザー名>

      3. パスワード<お使いの github.com パスワードまたは 2 要素認証の個人用アクセストークン>

        基本認証資格情報の新しいレコードフォーム。

    5. [送信] ボタンをクリックします。

  2. 前回の演習で IPLookup アプリケーションが Studio で開かれていない場合は、ここで開きます。

    1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムアプリケーション] > [Studio] を開きます。
    2. [アプリケーションを選択] ダイアログで、IPLookup アプリケーションをクリックします。
  3. [ソースコントロール] メニューを開き、[ソースコントロールへのリンク] メニューアイテムを選択します。

  4. IPLookupApp GitHub リポジトリへの接続を構成します。

    1. URL<IPLookupApp リポジトリの作成後にコピーした URL>

    2. 資格情報GitHub 資格情報 (GitHub Credentials) - <お使いの github.com ユーザー名>

    3. 分岐マスター (master)

    4. コミットコメント初期 IPLookupApp コミット

      GitHub へのリンクを構成します

  5. [ソースコントロールへのリンク] ボタンをクリックします。

  6. [ソースコントロールへのリンク] ダイアログが成功を報告したら、[閉じる] ボタンをクリックします。

    変更が正常にコミットされました

  7. Studio フッターに、Studio がリポジトリのマスター (master) 分岐に接続されていることが示されます。

    Studio がマスター分岐に接続されています

記事 (21/23)

「送信 REST データ連携」の理解度チェック

ここでは、送信 REST データ連携についての理解度を確認できます。自分の進行状況を評価するには、次の質問が役立ちます。質問ごとに回答を決定し、質問の任意の場所をクリックして回答を表示します。

質問:ServiceNow の送信 REST データ連携とは何かを最も的確に説明している文は次のどれですか?複数の回答が正解の場合があります。

  1. 会社レコードのために更新された株価を取得する ServiceNow から Web サービスへの REST 呼び出し。
  2. ユーザーの詳細を取得する ServiceNow から ServiceNow インスタンスへの REST 呼び出し。
  3. ナレッジ記事を翻訳する ServiceNow から言語翻訳 Web サービスへの REST 呼び出し。
  4. 更新された製品情報を取得する ServiceNow からベンダーへの REST 呼び出し。
  5. 顧客サイトで更新された天気情報を取得する ServiceNow から天気 API への REST 呼び出し。


回答:すべての応答が送信 REST データ連携の例です。送信と受信の両方のデータ連携が含まれているため、2 番目の選択肢は特殊です。


質問REST メッセージレコードの構成に使用される情報で「ない」ものは次のうちどれですか?

  1. HTTP メソッド
  2. エンドポイント
  3. 名前
  4. 認証
  5. HTTP ヘッダー


回答:正解は 1 です。HTTP メソッドは、Web サービスへの REST 呼び出しを行うために使用される関連レコードです。


質問REST メッセージレコードでサポートされている認証メソッドは次のうちどれですか?複数の回答が正解の場合があります。

  1. 認証なし
  2. クエリパラメーター
  3. 基本
  4. ユーザー名とパスワード
  5. OAuth 2.0


回答:正解は 1、3、5 です。一部の Web サービスではクエリパラメーターとして渡されるトークンを使用しますが、クエリパラメーターは HTTP メソッドレコードで構成されます。基本認証ではユーザー名とパスワードを使用しますが、[ユーザー名とパスワード] は選択可能な認証オプションではありません。


質問:利用可能な HTTP メソッドで「ない」ものは次のどれですか?

  1. GET
  2. POST
  3. PUT
  4. UPDATE
  5. 消去


回答:正解は 4 です。PATCH は 5 番目の HTTP メソッドです。


質問収益に関する IEX Cloud API のドキュメントを確認してください。次のうち、有効な HTTP メソッドのエンドポイントはどれですか?複数の回答が正解の場合があります。

  1. https://cloud.iexapis.com/stable/stock/\{symbol\}/earnings/\{last\}/\{field\}
  2. https://cloud.iexapis.com/stable/stock/$\{symbol\}/earnings/$\{last\}/$\{field\}
  3. /stock/{symbol}/earnings/{last}/{field}
  4. https://cloud.iexapis.com/stable/stock/$\{symbol\}/earnings/
  5. https://cloud.iexapis.com/stable/stock/NOW/earnings/$\{last\}/


回答:正解は 245 です。API に記述されているパスパラメーター {symbol}{last}{field} は、エンドポイントで変数にするために ${} 表記で構成する必要があります。エンドポイントにアクセスするには、エンドポイントの値に完全な URL が必要です。5 番目の選択肢は記号に静的な値を使用しています。これは有効ですが、単一の会社の収益の詳細を取得する場合にのみ役立ちます。


質問:正誤問題?クエリパラメーターは、実行時にエンドポイントの値に追加される名前と値のペアです。たとえば、名前が「last」で値が「2」のクエリパラメーターは、https://cloud.iexapis.com/stable/stock/$\{symbol\}/earnings?last=2 として収益のエンドポイントに追加されます。


回答:正解は正しいです。クエリパラメーターは、実行時にエンドポイントに追加されます。


質問:HTTP ログの作成に使用された HTTP ログレベルは次のどれですか?

送信 HTTP ログには使用されたメソッドと URL が示されますが、要求ヘッダーまたは要求本文のフィールドには情報がありません。

  1. なし
  2. 基本
  3. 昇格
  4. デバッグ
  5. すべて


回答:正解は 2 です。[なし] および [デバッグ] は HTTP ログレベルではありません。[昇格] には要求ヘッダーの詳細が含まれます。[すべて] には要求ヘッダーと要求本文の詳細が含まれます。


質問:REST メッセージメソッドを実行する方法は次のうちどれですか?複数の回答が正解の場合があります。

  1. HTTP メソッドレコードの [テスト] 関連リンクをクリックします。
  2. HTTP メソッドレコードの [テスト] ボタンをクリックします。
  3. [スクリプト使用のプレビュー] 関連リンクをクリックして JavaScript をコピーし、サーバーサイドスクリプトで Web サービスを呼び出します。
  4. [コードスニペットの取得] 関連リンクをクリックして JavaScript をコピーし、サーバーサイドスクリプトで Web サービスを呼び出します。
  5. HTTP メソッドレコードの [今すぐ実行] ボタンをクリックします。


回答:正解は 13 です。REST メッセージのメソッドは、スクリプトからテストおよび実行できます。


質問:開発者が REST Web サービスを呼び出した後、応答本文からデータを抽出する方法を教えてください。複数の回答が正解の場合があります。

  1. [応答本文の変換] ボタンをクリックして応答を変換します。
  2. JSON API を使用して、JSON フォーマットの応答を JavaScript オブジェクトに変換します。
  3. XMLDocument2 API を使用して、XML フォーマットの応答からデータを抽出する。
  4. XMLDocument2 スクリプトインクルードを使用して XML を解析します。
  5. [応答本文の変換] ウィザードを使用して、応答をオブジェクトに変換します。


回答:正解は 23 です。JSON API または XMLDocument2 API を使用して、返されたフォーマットから応答本文を変換します。


質問:正誤問題?REST メッセージレコードは、外部 REST Web サービスとやり取りするために必要です。


回答:正解は誤りです。開発者は RESTMessageV2 API を使用して、REST メッセージレコードなしでデータ連携全体をスクリプト化できます。


記事 (22/23)

送信データ連携モジュールのまとめ

コアコンセプト:

  • 送信 REST メッセージを使用して、サードパーティ Web サービスプロバイダーとのやり取りを定義、テスト、デバッグします

  • HTTP メソッドには次のものがあります。

    • エンドポイント
    • HTTP verb (get、post、put、patch、delete)
    • HTTP ヘッダー
    • MID Server の選択
    • HTTP クエリパラメーター
    • 認証
  • [テスト] 関連リンクを使用する前に代替変数を作成します

  • テスト結果を注意深く調べます

    • HTTP ステータス 200 は、予期されたデータが返されたことを意味しません
    • [応答] を調べて、想定されるデータと形式が受信されたかどうかを確認します
  • ログレベルを変更するには、 [HTTP ログレベルの設定] 関連リンクを使用します

    • 基本昇格、または すべてから選択します
    • デフォルトのログレベルは基本です
    • 送信 HTTP 要求ログを使用してデバッグ情報を表示します
  • [スクリプト使用のプレビュー] 関連リンクは、サーバー側スクリプトから Web サービスプロバイダーとやり取りするための JavaScript コードスタブを作成します

    • 可能であれば、setStringParameter() 変数の値をハードコードではなく動的にします
    • REST 応答から目的の情報を抽出するスクリプトロジックを追加します
      • JavaScript 文字列メソッド
      • JSON.parse
      • XMLDocument2 メソッド
    • キャッチブロックのスクリプトロジックの変更が必要な場合があります
  • RESTMessageV2 API を使用して、最初に送信 REST メッセージを定義せずに、サードパーティの Web サービスプロバイダーとの REST インタラクションのスクリプトを作成します

記事 (23/23)

「送信 REST データ連携」の完了後の参考資料

お疲れさまでした。「送信 REST データ連携」モジュールはこれで完了です。送信 REST への関心に基づいて、さらに次のことも学んでいただけます。

  • IntegrationHub の REST:この開発者サイト学習モジュールでは、REST APIs を操作する IntegrationHub アクションの作成、テスト、デバッグについて学習します。
  • 受信 REST データ連携:この開発者サイト学習モジュールでは、REST API Explorer を使用して ServiceNow API への要求を構築し、テストします。
  • Scripted REST APIs:この開発者サイト学習モジュールでは、Scripted REST API を作成します。続けて、REST API Explorer を使用してその API をテストします。
  • スクリプトのテクニカルベストプラクティス:この開発者サイトガイドでは、コードを記述するときに使用する、推奨されるベストプラクティスを紹介しています。