2.15.10 HTTP受付のJSON-XML変換機能
HTTP受付のJSON-XML変換機能とは,HTTP受付でJSON形式の要求電文をXML形式に,またはXML形式の応答電文をJSON形式に変換する機能です。
HTTP受付のJSON-XML変換機能には,XMLスキーマを使用して変換する拡張モードと,XMLスキーマを使用しないで変換する標準モードがあります。どのモードを使って変換するかは,HTTP受付定義ファイルのhttprecp.json-xml-convert.modeプロパティで設定します。HTTP受付定義ファイルの詳細は,マニュアル「サービスプラットフォーム リファレンス」の「3.11.3 HTTP受付定義ファイル」を,標準モードと拡張モードの差異については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「11. JSONデータの変換」を参照してください。
また,使用するモードに合わせて,対応するJSON変換ツールを選択する必要があります。
JSON変換ツールについては,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「14. JSON変換ツールを使用したデータ変換」を参照してください。
- 〈この項の構成〉
(1) HTTP受付のJSON-XML変換機能の概要
RESTクライアントから送信されたJSON形式の要求電文を,HTTP受付でXML形式の要求電文に変換します。また,ビジネスプロセスから応答されたXML形式の応答電文をJSON形式に変換し,RESTクライアントへ応答します。HTTP受付のJSON-XML変換機能を使用したサービス部品呼び出し要求および応答の流れを次の図に示します。
|
|
HTTP受付に設定する電文フォーマット(XMLスキーマ)は,JSON変換ツールで生成します。JSON変換ツールはJSON形式の電文のサンプルを受け取り,JSON-XML変換後のXML形式の電文に適合する電文フォーマットを生成します。JSON-XML変換機能を使用するHTTP受付の開発の流れを次の図に示します。
|
|
HTTP受付の定義の詳細については,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「2.5 HTTP受付の定義」を,JSON変換ツールの詳細については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「14. JSON変換ツールを使用したデータ変換」を参照してください。
(2) HTTP受付のリクエスト処理時のJSON-XML変換機能
HTTP受付のリクエスト処理時のJSON-XML変換のタイミングや設定について説明します。
(a) HTTP受付のリクエスト処理時のJSON-XML変換のタイミング
HTTP受付のリクエスト処理時の,JSON-XML変換のタイミングを次の図に示します。
|
|
図中の1.〜4.について説明します。
-
HTTP受付がRESTクライアントから要求電文を受信します。
-
コンポーネント共通UOCでは,RESTクライアントから送信されたJSON形式の要求電文を扱います。
-
HTTP受付では,コンポーネント共通UOCの呼び出しとデータ変換の間でJSON-XML変換が実行されます。
-
データ変換では,JSON-XML変換機能で変換されたXML形式の要求電文を扱います。
(b) HTTP受付のリクエスト処理時にJSON-XML変換をする場合の設定
HTTP受付定義ファイルのhttprecp.telegram-auto-convertプロパティが「true」で,要求電文のcontent-type HTTPヘッダがapplication/jsonの場合,またはhttprecp.request.switchover.json-transfer.modeプロパティの値が「true」の場合,HTTP受付のリクエスト処理時にJSON-XML変換が実行されます。要求電文(ヘッダ)では,JSON-XML変換を実行するかどうかの切り替えはできません。プロパティの設定とJSON-XML変換の実行可否を次の表に示します。
|
HTTP受付定義ファイルに設定したプロパティの値 |
JSON-XML変換の実行 |
|---|---|
|
−(プロパティを設定していない) |
実行されない |
|
false |
実行されない |
|
true |
実行される |
- 参考
-
パススルーモードで,HTTPリクエストボディにmsgキーを使用するかどうかの設定に関わらず,JSON-XML変換機能を使用できます。
また,拡張モードでJSON-XML変換を行う場合,HTTP受付定義ファイルのhttprecp.json-xml-convert.modeプロパティに「advanced」を設定し,HTTP受付の要求電文フォーマットに,拡張モードのJSON変換ツールで生成したXMLスキーマファイルを設定する必要があります。
- 注意事項
-
JSON変換ツール以外で作成したXMLスキーマファイルを指定した場合,動作は保証されません。
XMLスキーマファイルの設定方法は,HTTP受付の定義内容によって異なります。HTTP受付の定義ごとのXMLスキーマファイルの設定方法を次に示します。
|
HTTP受付の定義 |
ルーティング定義の設定 |
XMLスキーマファイルの設定 |
|---|---|---|
|
呼出先固定 |
− |
HTTP受付の要求電文フォーマットに,XMLスキーマファイルを設定します。 |
|
呼出先選択 |
使用しない |
|
|
使用する |
HTTP受付定義ファイルに,XMLスキーマファイルを設定します。また,HTTP受付ルーティング定義ファイルに,XMLスキーマファイルのファイル名を設定します。 |
(c) HTTP受付のHTTPリクエストヘッダに関連する処理
JSON-XML変換機能に関連しているHTTP受付のHTTPリクエストヘッダについて説明します。
HTTP受付のHTTPリクエストヘッダの処理の詳細については,「2.15.4 HTTP受付のリクエスト処理」を参照してください。
- Content-Typeヘッダ
-
JSON-XML変換は,HTTPリクエストヘッダのContent-Typeヘッダの値に関わらず実行されます。また,Content-TypeヘッダがHTTPリクエストヘッダに設定されていない場合は,要求電文(ヘッダ)のcontent-type要素は生成されません。
- Content-Typeヘッダのcharset属性
-
HTTPリクエストヘッダのContent-Typeヘッダにcharset属性が設定されていない場合は,要求電文(ヘッダ)のcharset属性にHTTP受付定義ファイルのhttprecp.http.charsetプロパティの値が設定されます。httprecp.http.charsetプロパティが設定されていないときは,要求電文(ヘッダ)のcharset属性に「UTF-8」が設定されます。
HTTPリクエストヘッダおよびHTTP受付定義ファイルのプロパティの設定と要求電文(ヘッダ)の関係を次の表に示します。
|
HTTPリクエスト ヘッダの設定 |
HTTP受付定義ファイル httprecp.http.charset プロパティの設定 |
要求電文(ヘッダ) charset属性の設定 |
|
|---|---|---|---|
|
Content-Type ヘッダ |
charset 属性 |
||
|
○ |
○ |
○ |
HTTPリクエストヘッダのcharset属性の値が設定されます。 |
|
○ |
○ |
× |
|
|
○ |
× |
○ |
httprecp.http.charsetプロパティの値が設定されます。 |
|
○ |
× |
× |
「UTF-8」が設定されます。 |
|
× |
× |
○ |
要求電文(ヘッダ)のcharset属性は設定されません。 |
- (凡例)
-
○:値が設定されている
×:値が設定されていない
(3) HTTP受付のレスポンス処理時のJSON-XML変換機能
HTTP受付のレスポンス処理時のJSON-XML変換のタイミングや設定について説明します。
(a) HTTP受付のレスポンス処理時のJSON-XML変換のタイミング
HTTP受付のレスポンス処理時のJSON-XML変換のタイミングを次の図に示します。
|
|
図中の1.〜4.について説明します。
-
HTTP受付がビジネスプロセスから応答電文を受信します。
-
データ変換では,ビジネスプロセスから返却されたXML形式の応答電文を扱います。
-
HTTP受付では,データ変換とコンポーネント共通UOCの呼び出しの間でJSON-XML変換が実行されます。
-
コンポーネント共通UOCでは,JSON-XML変換機能で変換されたJSON形式の応答電文を扱います。
(b) HTTP受付のレスポンス処理時にJSON-XML変換をする場合の設定
HTTP受付定義ファイルのhttprecp.telegram-auto-convertプロパティが「true」で,要求電文のaccept HTTPヘッダがapplication/jsonの場合,またはhttprecp.response.switchover.json-transfer.modeプロパティの値が「true」の場合は,HTTP受付のレスポンス処理時にJSON-XML変換が実行されます。応答電文(ヘッダ)のjson-transfer要素の値が「false」の場合は,HTTP受付のレスポンス処理時にJSON-XML変換は実行されません。HTTP受付定義ファイルのプロパティおよび応答電文(ヘッダ)の設定とJSON-XML変換の実行可否を次の表に示します。
|
HTTP受付定義ファイルに設定したプロパティの値 |
応答電文(ヘッダ) json-transfer要素 |
JSON-XML変換の実行 |
|---|---|---|
|
−(プロパティを設定していない) |
要素なし |
実行されない |
|
false |
||
|
true |
||
|
false |
要素なし |
実行されない |
|
false |
||
|
true |
||
|
true |
設定なし |
実行される |
|
false |
実行されない |
|
|
true |
実行される |
また,拡張モードでJSON-XML変換を行う場合,HTTP受付定義ファイルのhttprecp.json-xml-convert.modeプロパティに「advanced」を設定し,HTTP受付の要求電文フォーマットに,拡張モードのJSON変換ツールで生成したXMLスキーマファイルを設定する必要があります。
- 注意事項
-
JSON変換ツール以外で作成したXMLスキーマファイルを指定した場合,動作は保証されません。
XMLスキーマファイルの設定方法は,HTTP受付の定義内容によって異なります。HTTP受付の定義ごとのXMLスキーマファイルの設定方法を次に示します。
|
HTTP受付の定義 |
ルーティング定義の設定 |
XMLスキーマファイルの設定 |
|---|---|---|
|
呼出先固定 |
− |
HTTP受付の応答電文フォーマットに,XMLスキーマファイルを設定します。 |
|
呼出先選択 |
使用しない |
|
|
使用する |
HTTP受付定義ファイルに,XMLスキーマファイルを設定します。また,HTTP受付ルーティング定義ファイルに,XMLスキーマファイルのファイル名を設定します。 |
(c) HTTP受付のHTTPレスポンスヘッダに関連する処理
JSON-XML変換機能に関連しているHTTP受付のHTTPレスポンスヘッダについて説明します。
HTTP受付のHTTPレスポンスヘッダの処理の詳細については,「2.15.5 HTTP受付のレスポンス処理」を参照してください。
- Content-Typeヘッダ
-
JSON-XML変換は,応答電文(ヘッダ)に設定されているContent-Typeの値に関わらず実行されます。また,応答電文(ヘッダ)にContent-Typeが設定されていない場合は,「text/xml」がHTTPレスポンスヘッダのContent-Typeヘッダに設定されます。
- Content-Typeヘッダのcharset属性
-
応答電文(ヘッダ)のContent-Typeにcharset属性が設定されていない場合は,HTTPレスポンスヘッダに設定されるContent-Typeヘッダのcharset属性に,HTTP受付定義ファイルのhttprecp.http.charsetプロパティの値が設定されます。httprecp.http.charsetプロパティが設定されていないときは,Content-Typeヘッダのcharset属性に「UTF-8」が設定されます。
応答電文(ヘッダ)およびHTTP受付定義ファイルのプロパティの設定とHTTPレスポンスヘッダのcharset属性の関係を次の表に示します。
|
応答電文(ヘッダ) の設定 |
HTTP受付定義ファイル httprecp.http.charset プロパティの設定 |
HTTPレスポンスヘッダ charset属性の設定 |
|
|---|---|---|---|
|
Content-Type ヘッダ |
charset 属性 |
||
|
○ |
○ |
○ |
応答電文(ヘッダ)のcharset属性の値が設定されます。 |
|
○ |
○ |
× |
|
|
○ |
× |
○ |
httprecp.http.charsetプロパティの値が設定されます。 |
|
○ |
× |
× |
「UTF-8」が設定されます。 |
|
× |
× |
○ |
HTTPレスポンスヘッダのcharset属性は設定されません。 |
- (凡例)
-
○:値が設定されている
×:値が設定されていない
(4) 拡張モードのJSON-XML変換で変換できない要素があった場合の処理
拡張モードのJSON-XML変換で変換できない要素があった場合,次の処理のどちらかを選択できます。
-
変換できる要素だけを対象にして,部分的に変換を行ってリクエスト処理を続行させる。
-
リクエスト処理をエラーにする。
変換できない要素があった場合の処理は,HTTP受付定義ファイルのhttprecp.json-transfer.allow-partial-conversionで設定できます。httprecp.json-transfer.allow-partial-conversionの設定については,マニュアル「サービスプラットフォーム リファレンス」の「3.11.3 HTTP受付定義ファイル」を参照してください。
ただし,変換できた要素がない場合は,設定に関係なくリクエスト処理はエラーとなります。
変換結果に問題がある場合は,メッセージを確認し,変換前のデータを修正して,再度リクエストを実行してください。変換できる要素だけを対象にして,部分的に変換を行ってリクエスト処理を続行させるときは,メッセージ「KDEC00065-W」を出力します。リクエスト処理をエラーにするときは,メッセージ「KDEC00060-E」を出力します。メッセージの引数「error message」に,変換に失敗したすべての要素と,それぞれの発生原因が出力されます。