fix: 최종 return할때 요청정보도 같이 넘겨주도록 저장, txid 등 호출하는 서비스에서 사용하도록

version-jdk1.8
박성영 4 weeks ago
parent f221441220
commit e9fea5a8c3

@ -4,6 +4,7 @@ import com.vmis.interfaceapp.model.basic.NewBasicRequest;
import com.vmis.interfaceapp.model.basic.NewBasicResponse;
import com.vmis.interfaceapp.model.basic.OldBasicRequest;
import com.vmis.interfaceapp.model.basic.OldBasicResponse;
import com.vmis.interfaceapp.model.common.ApiResponse;
import com.vmis.interfaceapp.model.common.Envelope;
import com.vmis.interfaceapp.model.ledger.NewLedgerRequest;
import com.vmis.interfaceapp.model.ledger.NewLedgerResponse;
@ -54,7 +55,7 @@ public class VehicleInterfaceController {
)
)
)
public ResponseEntity<Envelope<OldBasicResponse>> oldBasic(
public ResponseEntity<ApiResponse<OldBasicRequest, OldBasicResponse>> oldBasic(
@Valid @org.springframework.web.bind.annotation.RequestBody Envelope<OldBasicRequest> envelope
) {
// 서비스에서 요청 보강/로깅/호출을 모두 오케스트레이션
@ -83,7 +84,7 @@ public class VehicleInterfaceController {
)
)
)
public ResponseEntity<Envelope<NewBasicResponse>> newBasic(
public ResponseEntity<ApiResponse<NewBasicRequest, NewBasicResponse>> newBasic(
@Valid @org.springframework.web.bind.annotation.RequestBody Envelope<NewBasicRequest> envelope
) {
// 서비스에서 요청 보강/로깅/호출을 모두 오케스트레이션
@ -117,7 +118,7 @@ public class VehicleInterfaceController {
)
)
)
public ResponseEntity<Envelope<NewLedgerResponse>> newLedger(
public ResponseEntity<ApiResponse<NewLedgerRequest, NewLedgerResponse>> newLedger(
@org.springframework.web.bind.annotation.RequestBody Envelope<NewLedgerRequest> envelope
) {
// 서비스에서 요청 보강/호출을 오케스트레이션

@ -0,0 +1,39 @@
package com.vmis.interfaceapp.model.common;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
/**
* API :
*
* <pre>
* {
* "request": { "data": [...] },
* "response": { "data": [...] }
* }
* </pre>
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
@Getter
@Setter
public class ApiResponse<REQ, RES> {
@JsonProperty("request")
private Envelope<REQ> request;
@JsonProperty("response")
private Envelope<RES> response;
public ApiResponse() {}
public ApiResponse(Envelope<REQ> request, Envelope<RES> response) {
this.request = request;
this.response = response;
}
public static <REQ, RES> ApiResponse<REQ, RES> of(Envelope<REQ> request, Envelope<RES> response) {
return new ApiResponse<>(request, response);
}
}

@ -5,6 +5,7 @@ import com.vmis.interfaceapp.model.basic.NewBasicRequest;
import com.vmis.interfaceapp.model.basic.NewBasicResponse;
import com.vmis.interfaceapp.model.basic.OldBasicRequest;
import com.vmis.interfaceapp.model.basic.OldBasicResponse;
import com.vmis.interfaceapp.model.common.ApiResponse;
import com.vmis.interfaceapp.model.common.Envelope;
import com.vmis.interfaceapp.model.common.RequestEnricher;
import com.vmis.interfaceapp.model.ledger.NewLedgerRequest;
@ -26,30 +27,34 @@ public class VehicleInterfaceService {
private final GovernmentApi governmentApi;
private final RequestEnricher enricher;
public ResponseEntity<Envelope<OldBasicResponse>> oldBasic(Envelope<OldBasicRequest> envelope) {
public ResponseEntity<ApiResponse<OldBasicRequest, OldBasicResponse>> oldBasic(Envelope<OldBasicRequest> envelope) {
// 1) 요청 보강
enricher.enrichOldBasic(envelope);
// 2) 외부 API 호출
ResponseEntity<Envelope<OldBasicResponse>> response = governmentApi.callOldBasic(envelope);
return response;
// 3) 요청/응답 함께 반환
ApiResponse<OldBasicRequest, OldBasicResponse> apiResponse = ApiResponse.of(envelope, response.getBody());
return ResponseEntity.status(response.getStatusCode()).body(apiResponse);
}
public ResponseEntity<Envelope<NewBasicResponse>> newBasic(Envelope<NewBasicRequest> envelope) {
public ResponseEntity<ApiResponse<NewBasicRequest, NewBasicResponse>> newBasic(Envelope<NewBasicRequest> envelope) {
// 1) 요청 보강
enricher.enrichNewBasic(envelope);
// 2) 외부 API 호출
ResponseEntity<Envelope<NewBasicResponse>> response = governmentApi.callNewBasic(envelope);
return response;
// 3) 요청/응답 함께 반환
ApiResponse<NewBasicRequest, NewBasicResponse> apiResponse = ApiResponse.of(envelope, response.getBody());
return ResponseEntity.status(response.getStatusCode()).body(apiResponse);
}
public ResponseEntity<Envelope<NewLedgerResponse>> newLedger(Envelope<NewLedgerRequest> envelope) {
public ResponseEntity<ApiResponse<NewLedgerRequest, NewLedgerResponse>> newLedger(Envelope<NewLedgerRequest> envelope) {
// 1) 요청 보강
enricher.enrichNewLedger(envelope);
// 2) 외부 API 호출
ResponseEntity<Envelope<NewLedgerResponse>> response = governmentApi.callNewLedger(envelope);
return response;
// 3) 요청/응답 함께 반환
ApiResponse<NewLedgerRequest, NewLedgerResponse> apiResponse = ApiResponse.of(envelope, response.getBody());
return ResponseEntity.status(response.getStatusCode()).body(apiResponse);
}
}

Loading…
Cancel
Save