From e9fea5a8c38c339067c7838ea5524d7d32357afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B1=EC=98=81?= Date: Thu, 20 Nov 2025 13:04:38 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=B5=9C=EC=A2=85=20return=ED=95=A0?= =?UTF-8?q?=EB=95=8C=20=EC=9A=94=EC=B2=AD=EC=A0=95=EB=B3=B4=EB=8F=84=20?= =?UTF-8?q?=EA=B0=99=EC=9D=B4=20=EB=84=98=EA=B2=A8=EC=A3=BC=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=A0=80=EC=9E=A5,=20txid=20=EB=93=B1=20=ED=98=B8?= =?UTF-8?q?=EC=B6=9C=ED=95=98=EB=8A=94=20=EC=84=9C=EB=B9=84=EC=8A=A4?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VehicleInterfaceController.java | 7 ++-- .../model/common/ApiResponse.java | 39 +++++++++++++++++++ .../service/VehicleInterfaceService.java | 21 ++++++---- 3 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/vmis/interfaceapp/model/common/ApiResponse.java 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); } }