メインコンテンツまでスキップ

RESTエラー応答プログラム

プログラムの用途実装するJavaインターフェース適用する設定画面
ユーザー呼び出しプログラムRestErrorResponseCreateAPI Information Management > API Information

受信システムの障害などで、要求電文を受信システムに送信できない場合、当該取引は無応答(Timeout)処理される。

もし、送信システムに、エラー応答電文を送信する必要がある場合、エラー応答プログラムでエラー電文を作成して、送信システムに応答を送信することができる。

開発方法

エラー応答プログラムの入出力モデル

RestErrorResponseCreate APIは、入力と出力として、それぞれRestErrorResponseCreateInRestErrorResponseCreateOutを使用する。入力と出力のモデルは、APIプロジェクトのbxi.api.modelに定義されており、それぞれの項目についての説明は、下記のとおりである。

RestErrorResponseCreateIn

設定項目フィールド名説明
機関コードinstCd電文を送信した機関コード、、または対内システム電文を対外機関に送信する機関コードを意味する。FEPでのみ使用される項目である。
業務コードbizCd機関や対内システムの業務コードを意味する。
ドメインIDdomainIdドメインIDを意味する。
APIIDapiIdAPI IDを意味する。
HTTPメソッドhttpMethodHTTPメソッド(GET、POST..)を意味する。
URLurl転送するURLを意味する。
HTTPヘッダーhttpHeaderHTTPヘッダー値をMap形式で保存する。
個別部データbody各取引別の個別電文を意味する。
要求・応答区分rqstRspsDscd要求・応答区分コードを意味する。
HTTP応答コードhttpRspsCdHTTPレ応答コードを意味する。
応答スコードrspsCd応答コードを意味する。
タイムアウトするかどうかtimeoutタイムアウトエラーであるかどうかを意味する。タイムアウトエラーの場合、trueである。
同期するかどうかsync同期するかどうかを意味する。同期の場合、trueである。
伝送エラーsendError電文伝送エラーであるかどうかを意味する。電文伝送エラーの場合、trueである。
例外exception取引に失敗した例外を意味する。

RestErrorResponseCreateOut

設定項目フィールド名説明
HTTPヘッダーhttpHeaderHTTPヘッダー値をMap形式で保存する。
個別部データbodyエラー応答する個別部データを意味する。応答する個別部データがない場合、nullと応答する。
HTTP状態コードstatusCodeHTTPレ応答コードを意味する。セットされた値で応答コードが表示される。
エラーであるかどうかerrorエラー応答電文作成中にエラーが発生したかどうかを意味する。trueと応答すると、エラー応答電文を送信しない。

下記の例は、送信システムで受信した電文を処理するプロセスでエラーが発生してRESTエラー応答する例である。

1.出力オブジェクト作成および初期化

@Override
public RestErrorResponseCreateOut errorProcess(RestErrorResponseCreateIn in) {
RestErrorResponseCreateOut out = new RestErrorResponseCreateOut();
}

エラー応答電文を作成して伝送する出力オブジェクトを作成する。

2.エラーコードを保存

// Generate error response message
Map<String, Object> body = new LinkedHashMap<String, Object>();
body.put("rgstrnNbr", "aaa");
body.put("rgstrnNbrDscd", "b");
body.put("dataUsePspr", "cc");
body.put("inqryAgrmntYn", "N");
body.put("entrprsName", "bankware");
body.put("custName", "name");
body.put("ocptnCd", "11");
body.put("cardRank", in.getRspsCd());

out.setStatusCode(500); // 500エラーを投げるという例である
out.setHttpHeader(in.getHttpHeader());
out.setBody(ConversionUtil.objectToJson(body));
out.setError(false);

入力で伝達したHTTPヘッダーを出力のHTTPヘッダーに保存し、エラー時に見せる個別部データを作成して出力のbodyに保存する。 当該ロジックが正常に実行された場合、出力のerrorにfalseを保存する。(エラー応答作成中にエラーが発生した場合には、trueが保存されるようにロジックを構成する。)

全体例

package bxi.extension.customizing.api;

import java.util.LinkedHashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import bxi.api.RestErrorResponseCreate;
import bxi.api.model.RestErrorResponseCreateIn;
import bxi.api.model.RestErrorResponseCreateOut;
import bxi.parser.conversion.ConversionUtil;

@Component
public class RestErrorResponseProgram implements RestErrorResponseCreate {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Override
public RestErrorResponseCreateOut errorProcess(RestErrorResponseCreateIn in) {
logger.debug("User Request Program Start. in : [{}]", in);

RestErrorResponseCreateOut out = new RestErrorResponseCreateOut();

Map<String, Object> body = new LinkedHashMap<String, Object>();
body.put("rgstrnNbr", "aaa");
body.put("rgstrnNbrDscd", "b");
body.put("dataUsePspr", "cc");
body.put("inqryAgrmntYn", "N");
body.put("entrprsName", "bankware");
body.put("custName", "name");
body.put("ocptnCd", "11");
body.put("cardRank", in.getRspsCd());

out.setStatusCode(500);
out.setHttpHeader(in.getHttpHeader());
out.setBody(ConversionUtil.objectToJson(body));
out.setError(false);

return out;
}

}