diff --git a/src/main/java/com/vmis/interfaceapp/controller/VehicleInterfaceController.java b/src/main/java/com/vmis/interfaceapp/controller/VehicleInterfaceController.java index cddb72a..371d89f 100644 --- a/src/main/java/com/vmis/interfaceapp/controller/VehicleInterfaceController.java +++ b/src/main/java/com/vmis/interfaceapp/controller/VehicleInterfaceController.java @@ -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> oldBasic( + public ResponseEntity> oldBasic( @Valid @org.springframework.web.bind.annotation.RequestBody Envelope envelope ) { // 서비스에서 요청 보강/로깅/호출을 모두 오케스트레이션 @@ -83,7 +84,7 @@ public class VehicleInterfaceController { ) ) ) - public ResponseEntity> newBasic( + public ResponseEntity> newBasic( @Valid @org.springframework.web.bind.annotation.RequestBody Envelope envelope ) { // 서비스에서 요청 보강/로깅/호출을 모두 오케스트레이션 @@ -117,7 +118,7 @@ public class VehicleInterfaceController { ) ) ) - public ResponseEntity> newLedger( + public ResponseEntity> newLedger( @org.springframework.web.bind.annotation.RequestBody Envelope envelope ) { // 서비스에서 요청 보강/호출을 오케스트레이션 diff --git a/src/main/java/com/vmis/interfaceapp/model/common/ApiResponse.java b/src/main/java/com/vmis/interfaceapp/model/common/ApiResponse.java new file mode 100644 index 0000000..3819a55 --- /dev/null +++ b/src/main/java/com/vmis/interfaceapp/model/common/ApiResponse.java @@ -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 응답 래퍼: 요청 정보와 응답 정보를 함께 반환 + * + *
+ * {
+ *   "request": { "data": [...] },
+ *   "response": { "data": [...] }
+ * }
+ * 
+ */ +@JsonInclude(JsonInclude.Include.NON_NULL) +@Getter +@Setter +public class ApiResponse { + + @JsonProperty("request") + private Envelope request; + + @JsonProperty("response") + private Envelope response; + + public ApiResponse() {} + + public ApiResponse(Envelope request, Envelope response) { + this.request = request; + this.response = response; + } + + public static ApiResponse of(Envelope request, Envelope response) { + return new ApiResponse<>(request, response); + } +} diff --git a/src/main/java/com/vmis/interfaceapp/service/VehicleInterfaceService.java b/src/main/java/com/vmis/interfaceapp/service/VehicleInterfaceService.java index fd8a069..007cc02 100644 --- a/src/main/java/com/vmis/interfaceapp/service/VehicleInterfaceService.java +++ b/src/main/java/com/vmis/interfaceapp/service/VehicleInterfaceService.java @@ -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> oldBasic(Envelope envelope) { + public ResponseEntity> oldBasic(Envelope envelope) { // 1) 요청 보강 enricher.enrichOldBasic(envelope); // 2) 외부 API 호출 ResponseEntity> response = governmentApi.callOldBasic(envelope); - return response; + // 3) 요청/응답 함께 반환 + ApiResponse apiResponse = ApiResponse.of(envelope, response.getBody()); + return ResponseEntity.status(response.getStatusCode()).body(apiResponse); } - public ResponseEntity> newBasic(Envelope envelope) { + public ResponseEntity> newBasic(Envelope envelope) { // 1) 요청 보강 enricher.enrichNewBasic(envelope); // 2) 외부 API 호출 ResponseEntity> response = governmentApi.callNewBasic(envelope); - return response; + // 3) 요청/응답 함께 반환 + ApiResponse apiResponse = ApiResponse.of(envelope, response.getBody()); + return ResponseEntity.status(response.getStatusCode()).body(apiResponse); } - public ResponseEntity> newLedger(Envelope envelope) { + public ResponseEntity> newLedger(Envelope envelope) { // 1) 요청 보강 enricher.enrichNewLedger(envelope); - // 2) 외부 API 호출 ResponseEntity> response = governmentApi.callNewLedger(envelope); - - return response; + // 3) 요청/응답 함께 반환 + ApiResponse apiResponse = ApiResponse.of(envelope, response.getBody()); + return ResponseEntity.status(response.getStatusCode()).body(apiResponse); } }