RESTMessageV2 - スコープ指定、グローバル
RESTMessageV2 API により、JavaScript を使用して送信 REST メッセージを送信できます。
RESTResponseV2 API を使用して、REST プロバイダーによって返される応答を管理します。
ユーザーエージェントの値は「ServiceNow/1.0」です。これを変更するには、glide.http.user.agent システムプロパティをシステムのプロパティ [sys_properties] テーブルに追加します。
RESTMessageV2 - disableForcedVariableSubstitution()
送信 REST メッセージの強制変数代替を無効にします。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get");
sm.disableForcedVariableSubstitution();
var response = sm.execute();
RESTMessageV2 - execute()
REST メッセージをエンドポイントに送信します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| RESTResponse | REST プロバイダーによって返される応答。 |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
var response = sm.execute(); //Might throw exception if http connection timed out or some issue with sending request itself because of encryption/decryption of password.
RESTMessageV2 - executeAsync()
REST メッセージを非同期でエンドポイントに送信します。非同期呼び出しを行うときに、インスタンスは Web サービスプロバイダーからの応答を待機しません。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| RESTResponse | REST プロバイダーによって返される応答。 |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。executeAsync を使用する場合は、非同期呼び出しを利用して応答本文を別のビジネスルールで処理する方法を検討してください。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
var response = sm.executeAsync(); //Might throw exception if http connection timed out or some issue with sending request itself because of encryption/decryption of password.
RESTMessageV2 - getEndpoint()
REST メッセージのエンドポイントの URL を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | REST Web サービスプロバイダーの URL。 |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
var endpoint = sm.getEndpoint();
RESTMessageV2 - getRequestBody()
REST メッセージ本文のコンテンツを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | REST メッセージの本文。 |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
var body = sm.getRequestBody();
RESTMessageV2 - getRequestHeader(文字列 headerName)
REST メッセージで指定された HTTP ヘッダーの値を取得します。
デフォルトでは、このメソッドはシステムによって自動的に設定されたヘッダーの値を返すことはできません。このメソッドにすべてのヘッダーへのアクセスを許可するには、プロパティ glide.http.log_debug を true に設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| headerName | 文字列 | 値を取得する要求ヘッダー。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 指定されたヘッダーの値。 |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
var header = sm.getRequestHeader("Accept");
RESTMessageV2 - getRequestHeaders()
REST クライアントによって設定された HTTP ヘッダーと関連する値を取得します。
このメソッドは、システムによって自動的に設定されたヘッダーを返しません。このメソッドがすべてのヘッダーを返すように設定するには、プロパティ glide.http.log_debug を true に設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| オブジェクト | 各ヘッダーの名前を関連する値にマッピングするオブジェクト。 |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
var headers = sm.getRequestHeaders();
RESTMessageV2 - RESTMessageV2()
空の RESTMessageV2 オブジェクトをインスタンス化します。
この方法でインスタンス化されたオブジェクトを使用する場合は、HTTP メソッドとエンドポイントを手動で指定する必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
var sm = new sn_ws.RESTMessageV2();
RESTMessageV2 - RESTMessageV2(文字列 name, 文字列 methodName)
REST メッセージレコードの情報を使用して RESTMessageV2 オブジェクトをインスタンス化します。
このコンストラクターを使用する前に、REST メッセージレコードを定義する必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | REST メッセージレコードの名前。 |
| methodName | 文字列 | 使用する HTTP メソッドの名前 (GET/get や PUT/put など。大文字と小文字を区別しない) |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
RESTMessageV2 - saveResponseBodyAsAttachment(文字列 tableName, 文字列 recordSysId, 文字列 fileName)
返された応答本文を添付ファイルレコードとして保存するように REST メッセージを設定します。
MID Server を介して送信される REST メッセージでこの機能を使用する場合、MID Server ユーザーは、添付ファイルレコードの読み取りと書き込みに必要なロールと、tableName パラメーターで指定されたテーブルでのレコードの読み取りと書き込みに必要なロールを持っている必要があります。
応答本文は、バイナリファイルである必要はなく、添付ファイルとして保存できます。JSON や XML などのテキスト形式を使用した応答本文も保存できます。インスタンスが添付ファイルを保存できない場合は、関連する RESTResponseV2 オブジェクトで getErrorMessage() を呼び出して、エラーの詳細を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| tableName | 文字列 | 保存したファイルを添付するレコードを含むテーブルを指定します。 |
| recordSysId | 文字列 | 保存したファイルを添付するレコードの sys_id を指定します。 |
| fileName | 文字列 | 保存するファイルに付けるファイル名を指定します。 |
| タイプ | 説明 |
|---|---|
| なし |
(function sampleRESTMessageV2() {
try{
var request = new sn_ws.RESTMessageV2();
request.setHttpMethod('get');
var attachment_sys_id = '<attachment_record_sys_id>',
tablename = 'incident',
recordSysId = '<incident_sys_id>',
response,
httpResponseStatus,
filename ='<filename>';
//endpoint - ServiceNow REST Attachment API
request.setEndpoint('https://<instance_name>.service-now.com/api/now/attachment/' + attachment_sys_id +'/file');
request.setBasicAuth('<username>', '<password>');
//RESTMessageV2 - saveResponseBodyAsAttachment(String tableName, String recordSysId, String fileName)
request.saveResponseBodyAsAttachment(tablename, recordSysId, filename);
response = request.execute();
httpResponseStatus = response.getStatusCode();
gs.info(" http response status_code: " + httpResponseStatus);
}
catch(ex){
var message = ex.getMessage();
gs.info(message);
}
})();
RESTMessageV2 - saveResponseBodyAsAttachment(文字列 tableName, 文字列 recordSysId, 文字列 fileName, 文字列 encryptContext)
返された応答本文を暗号化された添付ファイルレコードとして保存するように REST メッセージを設定します。
MID Server を介して送信される REST メッセージでこの機能を使用する場合、MID Server ユーザーは、添付ファイルレコードの読み取りと書き込みに必要なロールと、tableName パラメーターで指定されたテーブルでのレコードの読み取りと書き込みに必要なロールを持っている必要があります。
応答本文は、バイナリファイルである必要はなく、添付ファイルとして保存できます。JSON や XML などのテキスト形式を使用した応答本文も保存できます。インスタンスが添付ファイルを保存できない場合は、関連する RESTResponseV2 オブジェクトで getErrorMessage() を呼び出して、エラーの詳細を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| tableName | 文字列 | 保存したファイルを添付するレコードを含むテーブルを指定します。 |
| recordSysId | 文字列 | 保存したファイルを添付するレコードの sys_id を指定します。 |
| fileName | 文字列 | 保存するファイルに付けるファイル名を指定します。 |
| encryptContext | 文字列 | 暗号化コンテキストの sys_id を指定します。保存されたファイルは、このコンテキストを使用して暗号化されます。 |
| タイプ | 説明 |
|---|---|
| なし |
RESTMessageV2 - setAuthenticationProfile(文字列 type, 文字列 profileId)
既存の基本認証または OAuth 2.0 プロファイルを使用して、REST メッセージの資格情報を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| type | 文字列 | 使用する認証プロファイルのタイプ。有効な値は、基本認証を使用する場合は「basic」、OAuth 2.0 を使用する場合は「oauth2」です。 |
| profileId | 文字列 | 認証プロファイルレコードの sys_id。基本認証を使用する場合は、基本認証構成 [sys_auth_profile_basic] レコードの sys_id を指定します。OAuth 2.0 を使用する場合は、OAuth エンティティプロファイル [oauth_entity_profile] レコードの sys_id を指定します。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var requestBody;
var responseBody;
var status;
var sm;
try{
// Might throw exception if message doesn't exist or not visible due to scope.
sm = new sn_ws.RESTMessageV2("<REST_message_record>", "get");
//set auth profile to an OAuth 2.0 profile record.
sm.setAuthenticationProfile('oauth2', '1234adsf123212131123qasdsf');
sm.setStringParameter("symbol", "NOW");
sm.setStringParameterNoEscape("xml_data","<data>test</data>");
//In milliseconds. Wait at most 10 seconds for response from http request.
sm.setHttpTimeout(10000);
//Might throw exception if http connection timed out or some issue
//with sending request itself because of encryption/decryption of password.
response = sm.execute();
responseBody = response.haveError() ? response.getErrorMessage() : response.getBody();
status = response.getStatusCode();
} catch(ex) {
responseBody = ex.getMessage();
status = '500';
} finally {
requestBody = sm ? sm.getRequestBody():null;
}
RESTMessageV2 - setBasicAuth(文字列 userName, 文字列 userPass)
REST メッセージの基本認証ヘッダーを設定します。
この方法を使用してセキュリティ値を設定すると、REST メッセージレコードに対して定義された基本認証値が上書きされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| userName | 文字列 | REST メッセージの認証に使用するユーザー名。 |
| userPass | 文字列 | 指定されたユーザーのパスワード。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
sm.setBasicAuth("username","password");
RESTMessageV2 - setEccCorrelator(文字列 correlator)
送信要求と ECC キュー内の結果の応答レコードを関連付けます。このメソッドは、MID サーバー を介して送信される REST メッセージにのみ適用されます。
提供されたコリレーターは、応答の ECC キューレコードの [エージェントコリレーター] フィールドに入力されます。MID Server を介して非同期自動化を設計するときに、それぞれの送信要求に一意のコリレーターを提供して、ECC キュー内の正しい結果を要求に関連付けます。
| 名前 | タイプ | 説明 |
|---|---|---|
| correlator | 文字列 | 一意の識別子 |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
sm.setEccCorrelator("unique_identifier");
RESTMessageV2 - setEccParameter(文字列 name, 文字列 value)
REST メッセージペイロードに書き込むことで、データベースの値を上書きします。このメソッドは、MID Server を介して送信される REST メッセージにのみ適用されます。
エンドポイント URL が REST エンドポイントの最大フィールド長よりも長い場合など、データベース内の REST メッセージにある値が無効な場合は、このメソッドを使用します。ソースを name パラメーターとして渡すことで、このメソッドを使用してエンドポイント URL のみを設定できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | パラメーターの名前 (source など)。 |
| value | 文字列 | 指定されたパラメータに割り当てる値。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
sm.setEccParameter("source","http://very.long.endpoint.url");
RESTMessageV2 - setEndpoint(文字列 endpoint)
REST メッセージのエンドポイントを設定します。
デフォルトでは、REST メッセージは REST メッセージレコードで指定されたエンドポイントを使用します。このメソッドを使用して、このデフォルトを上書きします。パラメーターなしで RESTMessageV2 - RESTMessageV2() コンストラクターを使用する場合は、このメソッドを呼び出す必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| endpoint | 文字列 | 連携する REST プロバイダーの URL。 |
| タイプ | 説明 |
|---|---|
| なし |
var sm = new sn_ws.RESTMessageV2();
sm.setEndpoint("http://web.service.endpoint");
RESTMessageV2 - setHttpMethod(文字列 method)
この REST メッセージが実行する HTTP メソッド (GET や PUT など) を設定します。
パラメーターなしで RESTMessageV2 - RESTMessageV2() コンストラクターを使用する場合は、HTTP メソッドを設定する必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| method | 文字列 | 実行する HTTP メソッド。 |
| タイプ | 説明 |
|---|---|
| なし |
var sm = new sn_ws.RESTMessageV2();
sm.setHttpMethod("post");
RESTMessageV2 - setHttpTimeout(数字 timeoutMs)
要求がタイムアウトするまでに REST メッセージが Web サービスプロバイダーからの応答を待機する時間を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| timeoutMs | 数字 | REST プロバイダーへの呼び出しがタイムアウトするまでの時間 (ミリ秒)。 注: この値はソケットのタイムアウトを設定するものであり、ソケットが指定された時間内にデータを受信しない場合にのみタイムアウトします。応答がストリーミングされる環境では、接続がタイムアウト値よりも長くなる可能性があります。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例を使用するには、<REST_message_record> をインスタンスからの REST メッセージの名前で置き換えます。
// Might throw exception if message doesn't exist or not visible due to scope.
var sm = new sn_ws.RESTMessageV2("<REST_message_record>", "get");
sm.setHttpTimeout(6000);
RESTMessageV2 - setLogLevel(文字列 level)
このメッセージおよび対応する応答のログレベルを設定します。
RESTMessageV2 API を使用してログレベルを設定すると、REST メッセージレコードで設定されたログレベルが上書きされます。エンドポイントドメインが除外されている場合、またはプロパティ glide.outbound_http_log.override が true の場合、このログレベルは適用されません。送信 Web サービスのログを表示するには、次の場所に移動します。 .
| 名前 | タイプ | 説明 |
|---|---|---|
| level | 文字列 | ログレベル。有効な値は、basic、elevated、および all です。 |
| タイプ | 説明 |
|---|---|
| なし |
var rm = new sn_ws.RESTMessageV2();
rm.setLogLevel('all');
RESTMessageV2 - setMIDServer(文字列 midServer)
MID サーバー を介して通信するように REST メッセージを設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| midServer | 文字列 | 使用する MID サーバー の名前。インスタンスには、名前が指定されたアクティブな MID サーバー が必要です。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
sm.setMIDServer("mid_server_name");
RESTMessageV2 - setMutualAuth(文字列 profileName)
REST メッセージの相互認証プロトコルプロファイルを設定します。
このメソッドを使用してプロトコルプロファイルを設定すると、REST メッセージレコードに対して選択されたプロトコルプロファイルが上書きされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| profileName | 文字列 | 相互認証に使用するプロトコルプロファイルの名前。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
sm.setMutualAuth("mutual_auth_profile_name");
RESTMessageV2 - setQueryParameter(文字列 name, 文字列 value)
name=value の形式で要求 URL の末尾にパラメーターを追加します。
たとえば、setQueryParameter("sysparm_query","active=true^ORDERBYnumber^ORDERBYDESCcategory"); というコードは、sysparm_query=active=true^ORDERBYnumber^ORDERBYDESCcategory というテキストを要求 URL に追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | 渡す URL パラメーターの名前。 |
| value | 文字列 | URL パラメーターに割り当てる値。 |
| タイプ | 説明 |
|---|---|
| なし |
var sm = new sn_ws.RESTMessageV2();
//Set up message, including endpoint and authentication
sm.setQueryParameter("sysparm_query","active=true^ORDERBYnumber^ORDERBYDESCcategory");
RESTMessageV2 - setRequestBody(文字列 body)
PUT または POST HTTP メソッドを使用するときに Web サービスプロバイダーに送信する本文のコンテンツを設定します。
この方法を使用して本文のコンテンツを設定すると、本文の変数が REST メッセージ関数レコードのパラメーターに置き換えられません。REST メッセージ本文内のすべての値を明示的に定義する必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| body | 文字列 | 送信する要求の本文。 |
| タイプ | 説明 |
|---|---|
| なし |
var sm = new sn_ws.RESTMessageV2("Update user","post"); //Might throw exception if message doesn't exist or not visible due to scope.
var body = "<Message body content>";
sm.setRequestBody(body);
RESTMessageV2 - setRequestBodyFromAttachment(文字列 attachmentSysId)
既存の添付ファイルレコードを使用して要求本文を設定します。
MID サーバー を介して送信される REST メッセージでこの関数を使用する場合、添付ファイルレコードを読み取るために必要なロールを MID サーバー ユーザーが持っている必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| attachmentSysId | 文字列 | この REST メッセージで送信する添付ファイル [sys_attachment] レコードの sys_id。 |
| タイプ | 説明 |
|---|---|
| なし |
(function sampleRESTMessageV2() {
try {
var request = new sn_ws.RESTMessageV2();
request.setHttpMethod('post');
request.setEndpoint('<web service endpoint URL>');
request.setRequestBodyFromAttachment('<attachment sys_id>');
var response = request.execute();
var httpResponseStatus = response.getStatusCode();
gs.info("http response status_code: " + httpResponseStatus);
}
catch (ex) {
var message = ex.getMessage();
gs.info(message);
}
})();
RESTMessageV2 - setRequestHeader(文字列 name, 文字列 value)
REST メッセージ内の HTTP ヘッダーを指定された値に設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | ヘッダーの名前。 |
| value | 文字列 | 指定されたヘッダーに割り当てる値。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
sm.setRequestHeader("Accept","Application/json");
RESTMessageV2 - setRequestorProfile(文字列 requestorContext, 文字列 requestorId)
別の要求者に関連付けられた OAuth アクセストークンを取得するために、REST メッセージのデフォルトの要求者プロファイルを上書きします。
このメソッドは、OAuth 2.0 認証を使用するように設定された REST メッセージにのみ適用されます。このメソッドはオプションであり、ほとんどの構成では不要です。
| 名前 | タイプ | 説明 |
|---|---|---|
| requestorContext | 文字列 | |
| requestorId | 文字列 |
| タイプ | 説明 |
|---|---|
| なし |
RESTMessageV2 - setStringParameter(文字列 name, 文字列 value)
REST メッセージレコードの、指定の名前の REST メッセージ関数の変数を、指定した値に設定します。
値の中の XML 予約文字は、同等のエスケープ文字に変換されます。setStringParameterNoEscape を使用して、XML 予約文字をエスケープせずに変数を設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | REST メッセージ変数の名前。このパラメーターを REST メッセージ レコードで定義してから、値を割り当てる必要があります。 |
| value | 文字列 | 変数に割り当てる値。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
sm.setStringParameter("s","NOW");
RESTMessageV2 - setStringParameterNoEscape(文字列 name, 文字列 value)
REST メッセージレコードの、指定の名前の REST メッセージ関数の変数を、指定した値に設定します。
このメソッドは setStringParameter と同等ですが、XML 予約文字をエスケープしません。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | REST メッセージ変数の名前。このパラメーターを REST メッセージ レコードで定義してから、値を割り当てる必要があります。 |
| value | 文字列 | 変数に割り当てる値。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、REST_message_record をインスタンスからの REST メッセージの名前で置き換えます。
var sm = new sn_ws.RESTMessageV2("<REST_message_record>","get"); //Might throw exception if message doesn't exist or not visible due to scope.
sm.setStringParameterNoEscape("s","NOW");