HTTPパラメタ伝送は、HTTPメッセージのパラメタ情報を伝送する機能です。
HTTPアダプタのサービスエンドポイント定義でHTTPパラメタ伝送を有効にすることで、以下が行われます。
インバウンドHTTPアダプタでメッセージを受信した際に、HTTPメッセージのパラメタ(HTTPメソッド、リソースパス、HTTPヘッダ)をISIの共通メッセージのヘッダにマッピングします。また、応答返却時にISIの共通メッセージのヘッダの値をステータスコードとHTTPヘッダに設定します。いずれかの処理が失敗しサービス利用側にエラーが返却される場合、HTTPパラメタ伝送を設定していてもステータスコードやHTTPヘッダの伝送は行われません。
アウトバウンドHTTPアダプタでメッセージを送信する際に、ISIの共通メッセージのヘッダをHTTPメッセージにマッピングします。また、応答返却時のステータスコードとHTTPヘッダをISIの共通メッセージのヘッダに設定します。
HTTPパラメタ伝送を使用することで、インバウンドHTTPアダプタで受信したHTTPメッセージのパラメタ情報を、アウトバウンドHTTPアダプタが送信するHTTPメッセージに設定することができます。また、メディエータファンクションによりISIの共通メッセージのヘッダを操作することで、HTTPメッセージのパラメタを加工することができます。HTTPメッセージのパラメタの加工は、“6.1.2 HTTPメッセージを操作する”を参照してください。
以下は、インバウンドHTTPアダプタでHTTPメッセージを受信し、アウトバウンドHTTPアダプタでHTTPを送信する場合のHTTPパラメタ伝送の図です。
HTTPパラメタ伝送には以下の4種類があります。
HTTPメソッド伝送
リソースパス伝送
HTTPヘッダ伝送
ステータスコード伝送
HTTPメソッド伝送
インバウンドHTTPアダプタで受信したHTTPメッセージのHTTPメソッド名をアウトバウンドHTTPアダプタへ伝送することができます。
HTTPメソッド名はISIの共通メッセージのヘッダにマッピングされ、アウトバウンドHTTPアダプタではそのマッピングされたHTTPメソッド名を使用します。ISIの共通メッセージのヘッダキーは以下です。
com.fujitsu.esi.http.request.method
リソースパス伝送
インバウンドHTTPアダプタで受信したHTTPメッセージのURLのリソースパス(注1)をアウトバウンドHTTPアダプタに伝送することができます。
リソースパスはISIの共通メッセージのヘッダにマッピングされ、アウトバウンドHTTPアダプタではそのマッピングされたリソースパスを使用します。ISIの共通メッセージのヘッダキーは以下です。
com.fujitsu.esi.http.request.resourcepath
リソースパス伝送を使用する場合、アウトバウンドHTTPアダプタが定義の[接続先URL]情報にリソースパスを付加したURLでサービス提供側に接続します。
リソースパスについて、サービス利用側から以下のようなURLでISIを呼び出した場合を例に説明します。
http://MyHost/esihttp_DEFAULT/ESIHttpServer?endpointA/xxx/yyy/zzz
サービスエンドポイント名までのURL(http://MyHost/esihttp_DEFAULT/ESIHttpServer?endpointA)をベースURL、サービスエンドポイン名以降のURL(/xxx/yyy/zzz)をリソースパスと呼びます。サービス利用側からのISI呼び出し方法の詳細は、“2.1 HTTPを利用してISI呼び出しを行うアプリケーションの開発”を参照してください。
HTTPヘッダ伝送(注2)
HTTPリクエストのHTTPヘッダ伝送
インバウンドHTTPアダプタで受信したHTTPメッセージのHTTPヘッダを、アウトバウンドHTTPアダプタが送信するHTTPメッセージへ伝送することができます。
インバウンドHTTPアダプタで受信したHTTPメッセージのHTTPヘッダは、ISIの共通メッセージのヘッダにマッピングされます。アウトバウンドHTTPアダプタはそのマッピングされた共通メッセージのヘッダをHTTPリクエストのHTTPヘッダにマッピングします。
ISIの共通メッセージのヘッダキーは以下です。
com.fujitsu.esi.http.request.header.<HTTPヘッダのfield-name>
また、SOAPアダプタのヘッダ伝送定義の“共通メッセージのヘッダキー値”に上記キーを指定することで、HTTPヘッダをSOAPメッセージへマッピングすることもできます。SOAPアダプタのヘッダ伝送定義の詳細については、“B.11 ヘッダ伝送定義の詳細”を参照してください。
HTTPレスポンスのHTTPヘッダ伝送
アウトバウンドHTTPアダプタで受信したHTTPメッセージのHTTPヘッダを、インバウンドHTTPアダプタが応答するHTTPメッセージへ伝送することができます。
HTTPレスポンスのHTTPヘッダはISIの共通メッセージのヘッダにマッピングされ、インバウンドHTTPアダプタはそのマッピングされたHTTPヘッダをHTTPレスポンスのHTTPヘッダにマッピングします。ISIの共通メッセージのヘッダキーは以下です。
com.fujitsu.esi.http.response.header.<HTTPヘッダのfield-name>
HTTPヘッダに同一のfield-nameが複数指定されている場合、1つのキーに集約され、値がカンマ区切りで連結されます。例えばHTTPヘッダが以下の場合の例を示します。
sample1: Value1 sample1: Value2
HTTPヘッダが上記場合、ISIの共通メッセージのヘッダは以下(ヘッダキー=値)にマッピングされます。
com.fujitsu.esi.http.request.header.sample1=Value1, Value2
HTTP規約上、HTTPヘッダのfield-nameは大文字と小文字を区別しません。また、HTTPリクエストのHTTPヘッダのfield-nameは、インバウンドHTTPアダプタを経由する時点で全て小文字に変換されます。
このため、シーケンス内でHTTPヘッダの値を取得・変更する場合、HTTPヘッダのfield-nameの大文字と小文字の違いを無視した処理にする必要があります。
Content-LengthはISIの共通メッセージのヘッダにマッピングしますが、伝送されず自動的に設定されます。
Transfer-Encodingは使用できません。設定されていた場合、ヘッダからTransfer-Encodingの設定を削除し、Content-Lengthを設定して送信します。
ステータスコード伝送
アウトバウンドHTTPアダプタで受信したHTTPメッセージのステータスコードを、インバウンドHTTPアダプタが応答するHTTPメッセージへ伝送することができます。
ステータスコードはISIの共通メッセージのヘッダにマッピングされ、インバウンドHTTPアダプタはそのマッピングされたステータスコードをHTTPレスポンスのステータスコードにマッピングします。ISIの共通メッセージのヘッダキーは以下です。HTTP規約外のステータスコードは伝送できません。
com.fujitsu.esi.http.response.status
応答フレーズはステータスコードに応じて自動的に付与されます。応答フレーズは例えば以下のような内容です。
OK Bad Request Internal Server Error