RESTAPIRequestBody - スコープ対象、グローバル

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:5分
  • RESTAPIRequestBody API は、スクリプト内のスクリプト化された REST API 要求の本文コンテンツにアクセスできるメソッドを提供します。

    RESTAPIRequestBody オブジェクトの形式は、要求のコンテンツタイプのヘッダー値に応じて JSON または XML になります。
    注:
    このタイプのオブジェクトはインスタンス化できません。このタイプのオブジェクトは自動的に作成され、Scripted REST API リソーススクリプトでのみアクセスできます。

    この API は sn_ws 名前空間で実行されます。

    JSON 形式の単一エントリの example-request-body。
    {
     "name": "user1",
     "id": 1234,
     "roles": [
      {
       "name": "admin"
      },
      {
       "name": "itil"
      }
     ]
    }
    JSON 形式の複数エントリの example-request-body。
    [{
     "name": "user1",
     "id": 1234,
     "roles": [
      {
       "name": "admin"
      },
      {
       "name": "itil"
      }
     ]
    },{
     "name": "user2",
     "id":9876,
     "roles": [
      {
       "name":"admin"
      }
     ]
    }]

    RESTAPIRequestBody - data

    要求本文のコンテンツ。

    注:
    REST Web サービスは、ストリームを介して data、datastream、および dataString を使用します。ストリームは 1 回のみ使用されるため、呼び出すことができるのは 1 つのみです。たとえば、data と dataString の両方を呼び出す場合、2 回目の呼び出しは空を返します。
    表 : 1. フィールド
    名前 タイプ 説明
    data オブジェクトまたはアレイ 要求コンテンツ。要求に応じて単一のオブジェクトになる場合と、オブジェクトのアレイになる場合があります。
    var entry;
    var id;
    var requestBody = request.body;
    var requestData = requestBody.data; //May be an array or a single object
    if (requestData instanceof Array) { 
     entry = requestData[0].name; // 'user1'
     id = requestData[0].id; // '1234'
    } else {
     entry = requestData.name; // 'user1'
     id = requestData.id; // '1234'
    }

    RESTAPIRequestBody - dataStream

    ストリーム形式での要求本文のコンテンツ。

    注:
    REST Web サービスは、ストリームを介して data、datastream、および dataString を使用します。ストリームは 1 回のみ使用されるため、呼び出すことができるのは 1 つのみです。たとえば、data と dataString の両方を呼び出す場合、2 回目の呼び出しは空を返します。
    表 : 2. フィールド
    名前 タイプ 説明
    dataStream オブジェクト 要求本文のコンテンツ。要求から添付ファイルを作成したり、別のエンドポイントに要求を転送したりするために、ストリームを別の API に渡すことができます。
    var requestBody = request.body; 
    var requestStream = requestBody.dataStream;

    RESTAPIRequestBody - dataString

    文字列形式での要求本文のコンテンツ。

    注:
    REST Web サービスは、ストリームを介して data、datastream、および dataString を使用します。ストリームは 1 回のみ使用されるため、呼び出すことができるのは 1 つのみです。たとえば、data と dataString の両方を呼び出す場合、2 回目の呼び出しは空を返します。
    表 : 3. フィールド
    名前 タイプ 説明
    dataString 文字列 要求本文のコンテンツ。
    var requestBody = request.body; 
    var requestString = requestBody.dataString;

    RESTAPIRequestBody - hasNext()

    要求本文に追加のエントリーがあるかどうかを判断します。

    このメソッドを nextEntry() メソッドと一緒に使用して、複数の要求本文エントリーを反復処理します。

    表 : 4. パラメーター
    名前 タイプ 説明
    なし
    表 : 5. 返される内容
    タイプ 説明
    ブーリアン 要求本文に追加のエントリーがあるかどうかを示すフラグ。
    可能な値:
    • true:追加のエントリーが利用可能です。nextEntry() が呼び出されると、一致する最後のレコードがロードされるまで hasNext() が true のままになります。
    • false:追加のエントリーはありません。
    var requestBody = request.body;
    requestBody.hasNext(); // returns true if the request contains a single entry or multiple entries
    requestBody. nextEntry(); // returns next available entry
    
    //calling second time
    requestBody.hasNext(); // returns false if the request contains a single entry, or true if the request contains multiple entries

    RESTAPIRequestBody - nextEntry()

    要求本文から 1 つのエントリーをスクリプトオブジェクトとして取得します。

    このメソッドを hasNext() メソッドと一緒に使用して、複数の要求本文エントリーを反復処理します。

    表 : 6. パラメーター
    名前 タイプ 説明
    なし
    表 : 7. 返される内容
    タイプ 説明
    オブジェクト 要求本文からの単一のエントリー。
    var requestBody = request.body;
    var requestEntry = requestBody.nextEntry(); // returns available entry if there is only one entry, or the first entry if there are multiple.
    var name = requestEntry.name; // 'user1'
    
    // Calling second time
    requestEntry = requestBody.nextEntry(); // returns undefined if there is only one entry, or the second entry if there are multiple.

    この例では、hasNext() と nextEntry() を一緒に使用する方法を示します。

    var requestBody = request.body;
    while(requestBody.hasNext()){
    var entry = requestBody.nextEntry();
    }