HTTPトリガー

オペレーション名

HTTPトリガー

機能概要

HTTPトリガーは、指定したURLに対しHTTPクライアントからリクエストを送ることで、スクリプトを実行するトリガー機能です。
リクエストにはGETおよびPOSTを使用できます。

発火イメージ



プロパティ

HTTPトリガーの設定
項目名 内容 備考
トリガー名 トリガーの名前を入力します。  
実行パス トリガーの実行パスを入力します。
  • デフォルト値は「path」です。
  • 例:実行パスに「run」を指定した場合、トリガー実行のURLは以下のようになります。

    https://www.skyondemand.net/ws/trigger/run?cid=123&sid=456

  • 別画面で登録するHTTPトリガー情報のパスと一致させる必要があります。
正常終了時の動作 HTTPトリガーで実行したスクリプトが正常終了した場合の動作を選択します。
  • [スクリプトで生成されたページを返す]:(デフォルト)
    トリガー変数「trigger.outputData」内のデータを返します。
  • [別ページへフォワードさせる]:
    JSPなど別のウェブページにフォワードします。
  • フォワードできるページはJSPまたはHTMLです。
  • JSPファイルは、/data/pages以下に配置してください。
異常終了時の動作 HTTPトリガーで実行したスクリプトが異常終了した場合の動作を選択します。
  • [ウェブサーバのエラーページを返す]:(デフォルト)
    ウェブサーバで設定されているエラーページを返します。
  • [別ページへフォワードさせる]:
    JSPなど別のウェブページにフォワードします。
  • フォワードできるページはJSPまたはHTMLです。
  • JSPファイルは、/data/pages以下に配置してください。
リクエスト設定 リクエストに関する設定を行います。  
リクエスト設定/エンコーディング HTTPトリガーがリクエストを取得した時のエンコードを指定します。
  • デフォルト値は「UTF-8」です。
  • XMLデータまたはJSONデータを受け取る場合は、エンコードの指定は無効となります。
    • XMLデータにXML符号化宣言が存在する場合はそのエンコードで、存在しない場合はUTF-8として扱います。
    • JSONデータはUTF-8として扱います。
レスポンス設定 レスポンスに関する設定を行います。
  • HTTPトリガーで実行したスクリプトが異常終了した場合は、[レスポンス設定]の設定は無効となり、[異常終了時の動作]で設定した動作を行います。
レスポンス設定/エンコーディング HTTPトリガーがレスポンスを返す時のエンコードを指定します。
  • デフォルト値は「UTF-8」です。
  • 別ページにフォワードさせる場合は、エンコードの指定は無効となります。
    フォワードされるJSP側でエンコードの指定が必要になります。
レスポンス設定/Content-Type レスポンスのContent-Typeヘッダのメディアタイプを選択します。
  • [指定しない]:
    レスポンスとして返すデータに応じたメディアタイプを使用します。
    データがXMLデータではない場合、「text/html」を使用します。
    データがXMLデータではある場合、「text/xml」を使用します。
  • [text/html]:(デフォルト)
    「text/html」を使用します。
  • [text/xml]:
    「text/xml」を使用します。
  • [text/plain]:
    「text/plain」を使用します。
  • [text/csv]:
    「text/csv」を使用します。
  • [application/json]:
    「application/json」を使用します。
  • [text/csv]を選択した場合の動作については、「CSV出力について」を参照してください。
  • [application/json]を選択した場合の動作については、「JSON出力について」を参照してください。
レスポンス設定/ファイルとして出力 レスポンスをファイルとして出力するかどうかを選択します。
レスポンス設定/ファイル名をトリガー変数で指定する 出力するファイル名をトリガー変数「trigger.file_name」で指定するかどうかを選択します。
  • [レスポンス設定/ファイルとして出力]にチェックを入れた場合、有効になります。
レスポンス設定/ファイル名 出力するファイル名を入力します。
  • [レスポンス設定/ファイルとして出力]にチェックを入れて、[レスポンス設定/ファイル名をトリガー変数で指定する]のチェックを外した場合、有効になります。
  • マルチバイト文字を使用することはできません。
実行内容の設定
項目名 内容 備考
トリガー所有者 作成するトリガーの所有者を選択します。
  • 管理者権限を持ったユーザのみ選択できます。
    (一般ユーザは自分以外を選択することはできません。)
実行ユーザ名 [スクリプト]で指定したスクリプトを実行するユーザを選択します。  
パスワード [実行ユーザ名]で指定したユーザに対応したパスワードを入力します。  
サービス トリガーで実行するスクリプトを含むサービスを選択します。
  • サービスとして登録されたプロジェクトが表示されます。
スクリプト トリガーで実行するスクリプトを選択します。
  • [サービス]で指定したサービス内のスクリプトが表示されます。
スクリプト引数 [スクリプト]で指定したスクリプトに設定されているスクリプト入力変数が表示されます。
  • スクリプト出力変数は表示されません。
  • スクリプトにスクリプト入力変数を設定し、使用する方法については、「入出力変数について」を参照してください。
スクリプト引数/変数名 スクリプト変数名が表示されます。
  • 編集はできません。
スクリプト引数/型 スクリプト変数の型が表示されます。
  • 編集はできません。
スクリプト引数/値 スクリプト変数の値を入力します。
スクリプト出力 [スクリプト]で指定したスクリプトに設定されているスクリプト出力変数が表示されます。
  • スクリプト入力変数は表示されません。
  • スクリプトにスクリプト出力変数を設定し、使用する方法については、「入出力変数について」を参照してください。
スクリプト出力/変数名 スクリプト変数名が表示されます。
  • 編集はできません。
スクリプト出力/型 スクリプト変数の型が表示されます。
  • 編集はできません。
スクリプト出力/値 スクリプト変数の値を入力します。
実行オプションの設定
実行オプションの設定については、「実行オプションの設定」を参照してください。

トリガー変数

HTTPトリガーでは、実行スクリプトから情報を取得することができます。
また、この変数をJSPなどにフォワードすることもできます。JSPで「HttpServletRequest.getAttribute("変数名")」で取得できます。

トリガー変数名 内容 備考
入力データ trigger.inputData リクエストのContent-Typeヘッダの値によって、リクエスト本体を扱う形式が異なります。
  • [text/xml]または[application/xml]:
    リクエスト本体をXML形式として扱い、スクリプト入力変数に格納します。
  • [application/json]:
    リクエスト本体をJSON形式として扱い、スクリプト入力変数に格納します。
  • 指定例:${trigger.inputData}
  • 値を設定できるスクリプト入力変数はXML型のみです。
  • JSON形式のデータの扱いについては、「JSON形式のデータ変換について」を参照してください。
終了コード trigger.exitStatus 実行スクリプトの終了ステータスです。
  • 指定例:${trigger.exitStatus}
異常終了時メッセージ trigger.failureMessage 実行スクリプトが異常終了した場合のエラーメッセージ文字列です。
  • 指定例:${trigger.failureMessage}
サービス名 trigger.serviceName 実行スクリプトのサービス名です。
  • 指定例:${trigger.serviceName}
スクリプト名 trigger.scriptName 実行スクリプト名です。
  • 指定例:${trigger.scriptName}
出力データ trigger.outputData [正常終了時の動作][スクリプトで生成されたページを返す]を選択した場合、この変数内のデータをHTTPクライアントに返します。
  • 指定例:${trigger.outputData}
クライアントアドレス trigger.client_address SkyOnDemandサーバのIPアドレスが格納されます。
  • リクエスト元のIPアドレスを取得することはできません。
HTTPヘッダ trigger.header:<HTTPリクエストヘッダ名> <HTTPリクエストヘッダ名>で指定したリクエストヘッダの値を、スクリプト入力変数に格納します。
  • 指定例:${trigger.header:Content-Type}
  • <HTTPリクエストヘッダ名>に指定するヘッダ名の大文字小文字は区別しません。
  • <HTTPリクエストヘッダ名>に指定したヘッダが存在しない場合、スクリプト変数の初期値が使用されます。
  • <HTTPリクエストヘッダ名>に指定したヘッダが複数存在する場合、最初に検出したヘッダの値が格納されます。
trigger.header:<HTTPレスポンスヘッダ名> <HTTPレスポンスヘッダ名>で指定した名前と変数内の値を、レスポンスヘッダに追加します。
  • 指定例:${trigger.header:X-PRODUCT-NAME}
  • 以下のHTTPヘッダは指定しても無視されます。
    • Content-Type
    • Content-Disposition
    • Content-Length
    • Transfer-Encoding
    • Date
    • Server
ステータスコード trigger.status_code この変数内の値をレスポンスのステータスコードに設定します。
出力ファイル名 trigger.file_name この変数内の値をレスポンスで出力するファイルの名前に設定します。
  • 指定例:${trigger.file_name}
  • マルチバイト文字を使用することはできません。

リクエストパラメータ設定方法

実行スクリプトのスクリプト入力変数に対し、リクエストパラメータの値を設定することができます。

以下のスクリプトでは、文字列型のスクリプト入力変数「input」が定義されています。



リクエストパラメータで動的にスクリプト入力変数「input」の値を設定することができます。
例:https://www.skyondemand.net/ws/trigger/<実行パス>?cid=123&sid=456&<スクリプト入力変数名>=<>

マルチパートフォームデータの設定方法

実行スクリプトのスクリプト入力変数に対し、マルチパートフォームデータのHTMLフォームの値を格納することができます。

例:マルチパートフォームデータのHTMLフォームが以下の場合
<form method="post" action="<HTTPトリガーのURL>" enctype="multipart/form-data">
<p>名<br>
<input type="text" name="firstname"></p>
<p>姓<br>
<input type="text" name="lastname"></p>
<p>プロフィール画像<br>
<input type="file" name="attachment"></p>
<p><input type="submit" value="送信"></p>
</form>

送信されたHTTPリクエストボディの内容は以下になります。
Content-Type: multipart/form-data; boundary=<バウンダリ>

--<バウンダリ>
Content-Disposition: form-data; name="firstname"

Ichiro

--<バウンダリ>
Content-Disposition: form-data; name="lastname"

Suzuki

--<バウンダリ>
Content-Disposition: form-data; name="attachment"; filename="profile.jpg"
Content-Type: image/jpeg

</data/profile.jpg のデータ>

--<バウンダリ>--

スクリプト入力変数は、以下のようにHTMLフォームのinputタグのname属性と同名のスクリプト変数を作成することで、HTTPトリガーからスクリプト実行時に値が格納されます。

変数名 変数型
firstname 文字列型
lastname 文字列型
attachment バイナリ型
attachment_filename 文字列型

HTMLフォームのinputタグのtype属性が「file」のパラメータからアップロードされたファイルの内容を取得する場合、スクリプト入力変数の変数型は「バイナリ型」を指定します。
ファイル名を取得する場合、「<パラメータ名>_filename」という名前で文字列型のスクリプト入力変数を定義します。

CSV出力について

[レスポンス設定/Content-Type][text/csv]を指定した場合、トリガー変数「trigger.outputData」に渡されたデータによって以下のようにデータを出力します。

JSON出力について

[レスポンス設定/Content-Type][application/json]を指定した場合、トリガー変数「trigger.outputData」に渡されたデータによって以下のようにデータを出力します。

ファイル出力について

[レスポンス設定/ファイルとして出力]にチェックを入れた場合、レスポンスヘッダのフィールドは以下のように設定されます。
一般的なHTTPクライアントは、このレスポンスによって[レスポンス設定/ファイル名]で指定した名前、または[ファイル名をトリガー変数で指定する]にチェックを入れた場合、トリガー変数「trigger.file_name」に渡された名前のファイルをダウンロードする動作を行います。

フィールド名 フィールド値
Content-Type <メディアタイプ>; name=<ファイル名>;charset=<エンコーディング>
Content-Type: text/csv; name=test.csv;charset=Shift_JIS
Content-Disposition attachment; fileName=<ファイル名> Content-Disposition: attachment; filename=test.csv

JSON形式のデータ変換について

リクエストのContent-Typeヘッダが「application/json」の場合、リクエスト本体のJSON形式のデータは以下の規則にしたがってXML形式のデータに変換され、トリガー変数「trigger.inputData」に格納されます。
また、[レスポンス設定/Content-Type][application/json]を指定してデータを出力する際、トリガー変数「trigger.outputData」に渡されたXML形式のデータが以下の規則にしたがっている場合、JSON形式のデータに変換されます。

<--ルートがオブジェクト型の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>
 

レスポンスのステータスコードについて

トリガー変数「trigger.status_code」を使用することで、レスポンス時に任意のステータスコードを設定することが可能です。指定可能なステータスコードは以下のとおりです。
ステータスコード テキストフレーズ
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
206 Partial Content
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Requested Range Not Satisfiable
417 Expectation Failed
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported

仕様制限

主な例外

ありません。

注意事項