要求と応答のコンテンツタイプの制御

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:4分
  • スクリプト化された REST API 要求と応答で許可されるコンテンツタイプを制御します。

    デフォルトでは、スクリプト化された REST API は、 application/jsonapplication/xml、および text/xml をサポートしています。ユーザー定義のカスタムコンテンツタイプ ( JSON または xml サブタイプを含む) もサポートされています。例えば、 application/vnd.collection+jsonapplication/vnd.adobe.xdp+xml は、それぞれ JSON と XML として扱われます。
    重要:
    要求本文の形式が json または xml サブタイプでない場合は、要求本文 dataStream フィールドのみを使用して要求本文にアクセスします。json または非 xml 形式で要求本文 データdataStringnextEntry()、または hasNext() を使用すると、 500 のエラー応答が返されます。

    デフォルト設定

    [ デフォルトでサポートされる要求フォーマット (Default supported request formats)] フィールドと [デフォルトでサポートされる応答フォーマット (Default supported response formats)] フィールドを使用して、API のデフォルト値を設定できます。これらのフィールドは、ユーザーが Content-Type および Accept 要求ヘッダーにそれぞれ渡すことができる許容可能な値を定義します。要求元のユーザーが API またはリソースでサポートされていない Accept または Content-Type ヘッダーを指定すると、インスタンスは HTTP エラーコード 406 または 415 で応答します。

    [スクリプト化された REST サービス] フォームの [サポートされている要求形式 ] と [サポートされている応答形式 ] を使用して、各リソースのこれらの値を上書きできます。
    注:
    [ サポートされている要求形式] フィールドは、PUT、POST、および PATCH リソースに対してのみ表示されます。

    ワイルドカード値の使用

    有効なコンテンツタイプを指定するときにワイルドカード値を使用できます。
    • 1 文字のワイルドカード検索を実行するには、パーセント記号 (%) 文字を使用します。このワイルドカードでは、パーセント記号文字の任意の 1 文字を含む単語が検索されます。たとえば、テキストやテストなどの単語を検索するには、 te%t を検索します。
    • 複数文字のワイルドカード検索を実行するには、アスタリスク (*) 文字を使用します。このワイルドカードは、アスタリスク文字の代わりに 0 個以上の文字を含む単語を検索します。たとえば、planned や placed などの単語を検索するには、 pl*d を検索します。

    x-www-form-urlencoded コンテンツタイプの使用

    REST API またはリソースが application/x-www-form-urlencoded コンテンツタイプを受け入れる場合は、要求で指定された urlencoded 値を JSON マップとして取得できます。その後、これらの urlencoded キーと値のペアをクエリパラメーターとして、要求本文で、あるいはその両方で指定できます。これらは結合され、要求パラメーターに保存されます。request.queryParams オブジェクトを使用して、これらのパラメーターにアクセスします。

    たとえば、 API が application/x-www-form-urlencoded コンテンツタイプを受け入れるように定義されており、API が次のように実装されている場合は、
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
    
     response.setBody(request.queryParams);
    
    })(request, response);
    …次に、次の要求によってそれぞれの応答が生成されます。
    POST to localhost:8080/api/now/some_api/some_resource?name3=value3&name4=value4
    本文:
    name1=value1&name2=value2
    応答:
    { "result":
        { "name4": [ "value4" ], "name3": [ "value3" ], "name2": [ "value2" ],
          "name1": [ "value1" ]
        }
    }

    応答にバイナリタイプを送信する

    応答でバイナリ型を送信する場合は、応答コンテンツ型を設定し、 RESTAPIResponseStream オブジェクトを使用してバイナリストリームを直接書き込む必要があります。このオブジェクトにアクセスするには、応答オブジェクトで getStreamWriter() を呼び出します。詳細については、「」を参照してください。