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

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む3読むのに数分
  • Scripted REST API 要求と応答で許可されるコンテンツタイプを制御します。

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

    デフォルトの設定

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

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

    ワイルドカード値の使用

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

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

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

    たとえば、application/x-www-form-urlencoded コンテンツタイプを受け入れるように API が定義され、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() を呼び出します。詳しくは、「」を参照してください。