# DELETE実行処理

## オペレーション名

DELETE実行

## 機能概要

HTTPのDELETEメソッドでリクエストを実行します。

## データモデル

本コンポーネントのデータモデルはXML型です。
出力のスキーマについては、「スキーマ」を参照してください。

## プロパティ

変数の使用については、「変数」を参照してください。

##### 基本設定

項目名 | 必須/省略可 | 変数の使用 | 説明 | 備考
--- | --- | --- | --- | ---
名前 | 必須 | 使用不可 | スクリプトキャンバス上での名前を入力します。 |

##### 必須設定

項目名 | 必須/省略可 | 変数の使用 | 説明 | 備考
--- | --- | --- | --- | ---
接続先 | 必須 | 使用不可 | グローバルリソースを選択します。 グローバルリソースの設定方法については、「グローバルリソースのプロパティ」を参照してください。 [追加]: 新規にグローバルリソースを追加します。 [一覧の編集]: 「リソース一覧の編集」画面にて、グローバルリソースの設定を編集することができます。 |
パス | 省略可 | 使用可 | [接続先]の[URL]に入力したURLからの相対パスを指定します。 | [エンコード]で選択または入力したエンコードでURLエンコーディングされます。
エンコード | 省略可 | 使用可 | URLエンコーディングに使用するエンコードを選択または入力します。 入力する場合は、Java SE Runtime Environment 8でサポートされているエンコードを指定します。 詳細については、「Supported Encodings」(http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html)を参照してください。 | デフォルト値は「UTF-8」で、省略した場合は「UTF-8」が設定されます。
クエリパラメータ | 省略可 | - | URLに連結させるクエリパラメータの名前と値を指定します。 各クエリパラメータは以下のボタンで操作することができます。 [追加]: クエリパラメータを追加します。 [上へ]: 選択しているクエリパラメータの順序を一つ上に上げます。 [下へ]: 選択しているクエリパラメータの順序を一つ下に下げます。 [削除]: クエリパラメータを削除します。 | [エンコード]で選択または入力したエンコードでURLエンコーディングされます。
クエリパラメータ/名前 | 省略可 | 使用可 | クエリパラメータの名前を入力します。 | 省略した場合、クエリパラメータはURLに連結されません。
クエリパラメータ/値 | 省略可 | 使用可 | クエリパラメータの値を入力します。 |

##### レスポンス設定

項目名 | 必須/省略可 | 変数の使用 | 説明 | 備考
--- | --- | --- | --- | ---
データ出力先 | 必須 | 使用不可 | レスポンスボディの出力先を選択します。 [データ]:(デフォルト) 結果データに出力します。[データ形式]で選択した形式で出力します。 [ファイル]: [ファイルパス]で指定したファイルに出力します。 |
データ形式 | 必須 | 使用不可 | レスポンスボディのデータ形式を選択します。 [XML]:(デフォルト) XML形式で処理します。 [JSON]: JSON形式で処理します。 [その他のデータ形式]: テキスト形式またはバイナリ形式で処理します。 | [データ出力先]に[データ]を選択した場合、表示されます。 選択したデータ形式により出力スキーマが異なります。 出力スキーマについては、「出力スキーマ」を参照してください。
ファイルパス | 必須 | 使用可 | レスポンスボディを出力するファイルのパスを選択または入力します。 [参照]ボタンを押下するとファイルチューザが起動し、ファイルの選択ができます。 | [データ出力先]に[ファイル]を選択した場合、表示されます。 ファイルパスはDataAnyware 2.0ファイルシステムの絶対パスで指定してください。 パス区切り文字「/」以外のDataAnyware 2.0ファイルシステムの使用禁止文字は使用できません。
XMLとして不正な文字を削除する | 省略可 | 使用不可 | JSON形式のデータの解析中にXMLとして不正な文字列が見つかった場合に自動で削除するかどうかを選択します。 [チェックあり]: XMLとして不正な文字列を削除します。 [チェックなし]:(デフォルト) XMLとして不正な文字列を削除しません。 | [データ形式]に[JSON]を選択した場合、表示されます。
自動でリダイレクトする | 省略可 | 使用不可 | レスポンスにリダイレクト先が含まれている場合、自動でリダイレクトするかどうかを選択します。 [チェックあり]: 自動でリダイレクトします。 [チェックなし]:(デフォルト) 自動でリダイレクトしません。 | リダイレクトについては、「自動リダイレクトについて」を参照してください。
レスポンスのステータスコードが4xx、5xxの場合エラーにする | 省略可 | 使用不可 | レスポンスのステータスコードが「4xx」または「5xx」の場合、処理をエラーにするかどうかを選択します。 [チェックあり]: 処理をエラーにします。 [チェックなし]:(デフォルト) 処理をエラーにしません。 |

###### プロパティアクション

項目名 | 説明 | 備考
--- | --- | ---
JSONファイルを指定してスキーマを設定 | JSONファイルを指定して出力先のスキーマを設定します。 | [データ形式]に[JSON]を選択した場合、表示されます。

##### ヘッダ設定

項目名 | 必須/省略可 | 変数の使用 | 説明 | 備考
--- | --- | --- | --- | ---
リクエストヘッダ | 省略可 | - | リクエストに含めるHTTPヘッダを指定します。 各リクエストヘッダは以下のボタンで操作することができます。 [追加]: リクエストヘッダを追加します。 [上へ]: 選択しているリクエストヘッダの順序を一つ上に上げます。 [下へ]: 選択しているリクエストヘッダの順序を一つ下に下げます。 [削除]: リクエストヘッダを削除します。 |
リクエストヘッダ/名前 | 省略可 | 使用可 | リクエストヘッダの名前を入力します。 | 省略した場合、リクエストヘッダはリクエストに含まれません。
リクエストヘッダ/値 | 省略可 | 使用可 | リクエストヘッダの値を入力します。 |
レスポンスヘッダ | 省略可 | - | レスポンスに含まれるHTTPヘッダのうち、取得したいヘッダの名前を指定します。 各レスポンスヘッダは以下のボタンで操作することができます。 [追加]: レスポンスヘッダを追加します。 [上へ]: 選択しているレスポンスヘッダの順序を一つ上に上げます。 [下へ]: 選択しているレスポンスヘッダの順序を一つ下に下げます。 [削除]: レスポンスヘッダを削除します。 | レスポンスヘッダは[名前]で入力した名前のコンポーネント変数として定義されます。
レスポンスヘッダ/名前 | 省略可 | 環境変数のみ使用可 | レスポンスヘッダの名前を入力します。 | 大文字小文字は区別しません。 省略した場合、コンポーネント変数として定義されません。 名前の前後に半角空白・タブ・改行がある場合、トリムしてコンポーネント変数として定義されます。

##### 認証設定

項目名 | 必須/省略可 | 変数の使用 | 説明 | 備考
--- | --- | --- | --- | ---
認証 | 必須 | 使用不可 | リクエスト送信時の認証方式を選択します。 [なし]:(デフォルト) 認証を行いません。 [ベーシック認証]: ベーシック認証を行います。 [ダイジェスト認証]: ダイジェスト認証を行います。 [WSSE認証]: WSSE認証を行います。 [NTLM認証]: NTLM認証を行います。 [グローバルリソース]: グローバルリソースによる認証を行います。 グローバルリソースの設定方法については、以下を参照してください。 「グローバルリソースのプロパティ(OAuth 2.0)」 「グローバルリソースのプロパティ(OpenID Connect 1.0)」 |
ユーザ | 省略可 | 使用可 | 認証に使用するユーザ名を入力します。 | [認証]に[ベーシック認証]、[ダイジェスト認証]、[WSSE認証]または[NTLM認証]を選択した場合、表示されます。
パスワード | 省略可 | 使用可 | 認証に使用するパスワードを入力します。 | [認証]に[ベーシック認証]、[ダイジェスト認証]、[WSSE認証]または[NTLM認証]を選択した場合、表示されます。
グローバルリソース | 省略可 | 使用不可 | 認証に使用するグローバルリソースを選択します。 | [認証]に[グローバルリソース]を選択した場合、表示されます。

##### データ処理方式

項目名 | 必須/省略可 | 変数の使用 | 説明 | 備考
--- | --- | --- | --- | ---
データ処理方式 | 省略可 | 使用不可 | データ処理方式を選択します。 [スクリプトの設定を使用する]:(デフォルト) スクリプトプロパティの大容量データ処理の設定をアダプタに使用します。 [大容量データ処理を行わない]: 大容量データ処理を行いません。 [大容量データ処理を行う]: 大容量データ処理を行います。 |

##### コメント

項目名 | 必須/省略可 | 変数の使用 | 説明 | 備考
--- | --- | --- | --- | ---
コメント | 省略可 | 使用不可 | このアダプタの簡単な説明を記述することができます。 説明を記述すると、仕様書に反映させることができます。 |

## スキーマ

### 入力スキーマ

ありません。

### 出力スキーマ

[レスポンス設定]の[データ形式]の設定により、スキーマが異なります。

#### [XML]の場合

レスポンスボディのXMLデータによって異なります。

#### [JSON]の場合

レスポンスボディがJSON形式のデータの場合、XML形式に変換されて結果データに出力されます。
JSON形式からXML形式に変換した場合のスキーマは以下の通りです。

    <--ルートがオブジェクト型のJSONオブジェクトの場合 -->
    <?xml version="1.0"?>
    <root type="object">
      <JSONメンバの名前 type="JSONの型を表す属性値">値</JSONメンバの名前>
        :
    </root>

    <-- ルートが配列型のJSONオブジェクトの場合 -->
    <?xml version="1.0"?>
    <root type="array">
      <element type="JSONの型を表す属性値">値</element>
        :
    </root>

    <-- JSONメンバの名前がXMLの要素名として不正な場合 -->
    <?xml version="1.0"?>
    <root type="object">
      <member type="JSONの型を表す属性値" name="JSONメンバの名前">値</member>
        :
    </root>

要素名 | 属性名 | 説明 | 備考
--- | --- | --- | ---
root | - | JSONオブジェクトをラップするルート要素です。 |
type | JSONの型を表す属性値が設定されます。
属性値 | 説明
--- | ---
object | JSONのオブジェクト型を表します。 例:オブジェクト型からなるJSONオブジェクト
    {"name":"Suzuki"}
上記例のJSONオブジェクトは以下のXMLデータに変換されて出力されます。
    <root type="object">
      <name type="string">Suzuki</name>
    </root>
array | JSONの配列型を表します。 例:配列型からなるJSONオブジェクト
    ["apple","grape","orange"]
上記例のJSONオブジェクトは以下のXMLデータに変換されて出力されます。
    <root type="array">
      <element type="string">apple</element>
      <element type="string">grape</element>
      <element type="string">orange</element>
    </root>
JSONメンバの名前 | - | JSONメンバを表す要素です。 |
type | JSONの型を表す属性値が設定されます。
属性値 | 説明
--- | ---
string | JSONの文字列型を表します。 例:文字列型の値を持つJSONメンバ
    {"name":"Suzuki"}
上記例のJSONメンバは以下のXMLデータに変換されて出力されます。
    <name type="string">Suzuki</name>
number | JSONの数値型を表します。 例:数値型の値を持つJSONメンバ
    {"age":37}
上記例のJSONメンバは以下のXMLデータに変換されて出力されます。
    <age type="number">37</age>
boolean | JSONの真偽値型を表します。 例:真偽値型の値を持つJSONメンバ
    {"success":true}
上記例のJSONメンバは以下のXMLデータに変換されて出力されます。
    <success type="boolean">true</success>
object | JSONのオブジェクト型を表します。 例:オブジェクト型の値を持つJSONメンバ
    {"name":{"first":"Ichiro","last":Suzuki"}}
上記例のJSONメンバは以下のXMLデータに変換されて出力されます。
    <name type="object">
      <first type="string">Ichiro</first>
      <last type="string">Suzuki</last>
    </name>
array | JSONの配列型を表します。 JSONの配列型の要素は「element」要素で表されます。 JSONの配列型の要素の型がオブジェクト型の場合、JSONオブジェクトを表すスキーマを持ったXMLデータが「element」要素の子要素に出力され、それ以外の型の場合、値が「element」要素の要素内容に出力されます。 スキーマは以下の通りです。
    <JSONメンバの名前 type="array">
      <element type="JSONの型を表す属性値">値</element>
        :
    </JSONメンバの名前>
例:配列型の値を持つJSONメンバ
    {"fruits":["apple","grape","orange"]}
上記例のJSONメンバは以下のXMLデータに変換されて出力されます。
    <fruits type="array">
      <element type="string">apple</element>
      <element type="string">grape</element>
      <element type="string">orange</element>
    </fruits>
null | JSONのnull型を表します。 例:null型の値を持つJSONメンバ
    {"name":null}
上記例のJSONメンバは以下のXMLデータに変換されて出力されます。
    <name type="null"/>
element | - | 配列の要素を表す要素名です。 |
type | JSONの型を表す文字列が出力されます。 JSONメンバの名前のtype属性と同じ属性値が設定されます。 |
member | - | JSONメンバの名前がXMLの要素名として不正な場合に使われる要素名です。 |
type | JSONの型を表す文字列が出力されます。 JSONメンバの名前のtype属性と同じ属性値が設定されます。 |
name | JSONメンバの名前が出力されます。 例:XMLの要素名として不正な名前を持つJSONメンバ
    {"1name":"Suzuki"}
上記例のJSONメンバは以下のXMLデータに変換されて出力されます。
    <member type="string" name="1name">Suzuki</member>

#### [その他のデータ形式]の場合

    <?xml version="1.0"?>
    <response>
      <body>
        <content>レスポンスボディのデータ</content>
      </body>
    </response>

要素名 | 属性名 | 説明 | 備考
--- | --- | --- | ---
response | - |  |
body | - |  |
content | - | レスポンスボディのデータです。 | レスポンスのContent-Typeヘッダの値によってデータが変わります。 以下のいずれかの条件に一致した場合、レスポンスボディをテキストデータとみなしContent-Typeヘッダのcharsetパラメータの値でエンコーディングした文字列が出力されます。 Content-Typeヘッダのタイプが「text」である。 Content-Typeヘッダのサブタイプが「xml」または「json」で終わる。 上記条件に一致しない場合、レスポンスボディをバイナリデータとみなしContent-Typeヘッダのcharsetパラメータの値をもとに生成したバイト列のデータをBase64形式に変換した文字列が出力されます。 Content-Typeヘッダがない、またはcharsetパラメータがない場合、デフォルトで「ISO-8859-1」になります。

### Mapperでのスキーマ読み込み

[レスポンス設定]の[データ形式]の設定により、スキーマの読み込みが異なります。

#### [XML]の場合

スキーマは手動で読み込む必要があります。
レスポンスボディのスキーマを指定してください。

#### [JSON]の場合

[JSONファイルを指定してスキーマを設定]で設定した場合、スキーマは自動で読み込まれます。

#### [その他のデータ形式]の場合

スキーマは自動で読み込まれます。
自動で読み込まれたスキーマは編集可能です。
詳細については、「スキーマ編集」を参照してください。

## 大容量データ処理

大容量データ処理に対応しています。

## トランザクション

トランザクションはサポートしていません。

## PSPでの使用について

PSPでは使用できません。

## 使用できるコンポーネント変数

コンポーネント変数名 | 説明 | 備考
--- | --- | ---
status_code | レスポンスのHTTPステータスコードが格納されます。 | デフォルト値はnullです。
reason_phrase | レスポンスのHTTPステータスコードに関連したテキストフレーズが格納されます。 | デフォルト値はnullです。
error_response_body | レスポンスのステータスコードが「4xx」または「5xx」の場合のレスポンスボディが格納されます。 | デフォルト値はnullです。
message_category | エラー発生時、発生したエラーに対応するメッセージコードのカテゴリが格納されます。 | デフォルト値はnullです。
message_code | エラー発生時、発生したエラーに対応するメッセージコードのコードが格納されます。 | デフォルト値はnullです。
message_level | エラー発生時、発生したエラーに対応するメッセージコードの重要度が格納されます。 | デフォルト値はnullです。
error_type | エラー発生時、発生したエラーの種類が格納されます。 | デフォルト値はnullです。 エラーの種類は、以下のような形式となります。 例:「java.io.FileNotFoundException」 CustomerVision DataAnyware 2.0のバージョンにより、格納される内容が変わる可能性があります。
error_message | エラー発生時、発生したエラーのメッセージが格納されます。 | デフォルト値はnullです。 CustomerVision DataAnyware 2.0のバージョンにより、格納される内容が変わる可能性があります。
error_trace | エラー発生時、発生したエラーのトレース情報が格納されます。 | デフォルト値はnullです。 CustomerVision DataAnyware 2.0のバージョンや実行するクライアントアプリケーションにより、格納される内容が変わる可能性があります。

## 自動リダイレクトについて

[自動でリダイレクトする]にチェックを入れた場合の動作は以下の通りです。

- レスポンスのステータスコードが以下のいずれかに該当する場合、レスポンスの「Location」ヘッダで示されるURIに対してリクエストを再送信します。
  - 301:(Moved Permanently)
  - 302:(Found)
  - 303:(See Other)
  - 307:(Temporary Redirect)

## レスポンスのステータスコードが400以上の場合の結果データについて

レスポンスのステータスコードが400以上の場合の場合、レスポンスボディを結果データに出力します。
その際、レスポンスのContent-Typeヘッダの値によって結果データのスキーマが異なります。

- Content-Typeヘッダのサブタイプが「xml」で終わる場合
  レスポンスボディのXMLデータによって異なります。
- Content-Typeヘッダのサブタイプが「json」で終わる場合
  「JSON形式のスキーマ」になります。
- 上記のいずれにも該当しない場合
  「その他のデータ形式のスキーマ」になります。
  content要素内容は、以下の規則にしたがってエンコーディングされたレスポンスボディが出力されます。
  - レスポンスヘッダにContent-Typeヘッダがある場合、Content-Typeヘッダのcharsetパラメータの値でエンコーディングされます。
  - レスポンスヘッダにContent-Typeヘッダがない、またはContent-Typeヘッダにcharsetパラメータがない場合、「ISO-8859-1」でエンコーディングされます。

## 仕様制限

- リクエストのHTTPバージョンは1.1です。
- [パス]にクエリパラメータまたはURLフラグメントを指定した場合、無視されます。
- レスポンスボディが[データ形式]で選択した形式ではない場合、エラーが発生します。
- [レスポンスのステータスコードが4xx、5xxの場合エラーにする]にチェックを入れた場合、処理はエラーになりますがレスポンスボディがあれば結果データは出力されます。
- [リクエストヘッダ]の[名前]と[値]に2バイト文字を入力することはできません。
- [レスポンスヘッダ]の[名前]に「コンポーネント変数」に定義されている名前を入力することはできません。
- [レスポンスヘッダ]に同名のヘッダを複数指定することはできません。
- Cookieはスクリプト内で引き継がれます。ただし、Cookieはスレッドに割り当てられるためスレッド処理で生成されたスレッドには引き継がれません。

## 主な例外

例外名 | 原因 | 対策
--- | --- | ---
ResourceNotFoundException リソース定義が見つかりませんでした。名前:[] | [接続先]が指定されていません。 | [接続先]を指定してください。
ResourceNotFoundException リソース定義が見つかりませんでした。名前:[<グローバルリソース名>] | [接続先]で選択されたリソース定義が見つかりません。 | [接続先]で指定したグローバルリソースを確認してください。
InvalidPropertyConfigurationException リソースの必須項目が指定されていません。:<プロパティ名> | [接続先]の[<プロパティ名>]が指定されていません。 | [接続先]の[<プロパティ名>]を指定してください。
InvalidPropertyConfigurationException <プロパティ名>が指定されていません。 | [<プロパティ名>]が指定されていません。 | [<プロパティ名>]を指定してください。
FileIsDirectoryException | [ファイルパス]に入力されたパスがディレクトリです。 | [ファイルパス]にはファイルパスを入力してください。
PathIsNotAbsoluteException | [パス]または[ファイルパス]に入力されたパスが相対パスです。 | [パス]または[ファイルパス]には絶対パスを入力してください。
RestServerException | HTTPサーバからステータスコードが「5xx」のレスポンスが返されました。 | エラーメッセージの内容を参考に[接続先]に指定しているHTTPサーバの状態やリクエストの内容を確認してください。
RestClientException | HTTPサーバからステータスコードが「4xx」のレスポンスが返されました。 | エラーメッセージの内容を参考に[パス]で入力したパスやリクエストの内容を確認してください。
org.apache.http.conn.HttpHostConnectException | HTTPサーバまたはプロキシサーバに接続できませんでした。 | 接続先のHTTPサーバまたはプロキシサーバに接続可能かどうか確認してください。
org.apache.http.conn.ConnectTimeoutException | HTTPサーバまたはプロキシサーバとの接続時にタイムアウトが発生しました。 | [接続先]の[接続タイムアウト]の設定を確認してください。
java.net.SocketTimeoutException | HTTPサーバに接続後、リクエストを送信してからレスポンスを受信するまでの応答でタイムアウトが発生しました。 | [接続先]の[応答タイムアウト]の設定を確認してください。
javax.json.stream.JsonParsingException | レスポンスボディをJSON形式として処理中にエラーが発生しました。 | エラーメッセージの内容を参考に[レスポンス設定]の設定とレスポンスの内容を確認してください。

## 注意事項

- SSL接続の失敗について
  証明書がDataAnyware 2.0Serverが参照するキーストアにインポートされていない状態でWebサーバにSSL接続した際に、javax.net.ssl.SSLHandshakeExceptionなどのエラーが発生し、接続に失敗する場合があります。
  キーストアへのインポート方法については、「証明書のインポート」を参照してください。
  証明書はInternet Explorerから取得することもできます。詳細については、「Internet Explorerを使用した証明書の取得方法」を参照してください。