要求と応答のコンテンツタイプの制御
Scripted REST API 要求と応答で許可されるコンテンツタイプを制御します。
デフォルトでは、Scripted REST APIs は
application/json、application/xml、および text/xml をサポートしています。ユーザー定義のカスタムコンテンツタイプ (json または xml サブタイプ) もサポートされています。たとえば、application/vnd.collection+json および application/vnd.adobe.xdp+xml は、それぞれ JSON および XML として扱われます。重要:
要求本文の形式が
json または xml サブタイプでない場合は、要求本文の [dataStream] フィールドのみを使用して要求本文にアクセスします。要求本文の data、dataString、nextEntry()、または 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() を呼び出します。詳しくは、「」を参照してください。