OBP API 주소 변경
This commit is contained in:
@@ -32,11 +32,139 @@ public class ObpApiController extends BaseRestController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 전체 API 목록 조회
|
||||
* OBP API 전체 목록 조회 (v2)
|
||||
*
|
||||
* @param pretty true면 JSON 들여쓰기 적용
|
||||
* @return JSON Array
|
||||
*/
|
||||
@RequestMapping(value = "/api/apis.json", produces = JSON_CONTENT_TYPE)
|
||||
@ResponseBody
|
||||
public String getApisV2(@RequestParam(value = "pretty", required = false) Boolean pretty) {
|
||||
log.debug("OBP API 목록 조회 요청 (v2): pretty={}", pretty);
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
DataSourceContextHolder.setDataSourceType(
|
||||
DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.APIGW));
|
||||
|
||||
try {
|
||||
List<ObpApiDTO> apis = obpApiService.findAllApis();
|
||||
|
||||
String json = toJson(apis, pretty);
|
||||
|
||||
long elapsed = System.currentTimeMillis() - startTime;
|
||||
log.info("OBP API 목록 조회 완료 (v2): count={}, size={}, elapsed={}ms",
|
||||
apis.size(), getFormattedJsonSize(json), elapsed);
|
||||
|
||||
return json;
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("OBP API 목록 조회 실패 (v2)", e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* OBP API 목록 조회 (providerCode 검증)
|
||||
*
|
||||
* @param providerCode Provider 코드 (KJB만 허용, 대소문자 무시)
|
||||
* @param pretty true면 JSON 들여쓰기 적용
|
||||
* @return JSON Array
|
||||
*/
|
||||
@RequestMapping(
|
||||
value = "/api/apis.json",
|
||||
params = "providerCode",
|
||||
produces = JSON_CONTENT_TYPE
|
||||
)
|
||||
@ResponseBody
|
||||
public String getApisByProvider(
|
||||
@RequestParam("providerCode") String providerCode,
|
||||
@RequestParam(value = "pretty", required = false) Boolean pretty) {
|
||||
|
||||
log.debug("OBP API 목록 조회 요청 (provider): providerCode={}, pretty={}", providerCode, pretty);
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
// 1. providerCode 검증
|
||||
ProviderCodeValidator.validateProviderCode(providerCode);
|
||||
|
||||
// 2. 데이터소스 설정
|
||||
DataSourceContextHolder.setDataSourceType(
|
||||
DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.APIGW));
|
||||
|
||||
try {
|
||||
List<ObpApiDTO> apis = obpApiService.findAllApis();
|
||||
|
||||
String json = toJson(apis, pretty);
|
||||
|
||||
long elapsed = System.currentTimeMillis() - startTime;
|
||||
log.info("OBP API 목록 조회 완료 (provider): providerCode={}, count={}, size={}, elapsed={}ms",
|
||||
providerCode, apis.size(), getFormattedJsonSize(json), elapsed);
|
||||
|
||||
return json;
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("OBP API 목록 조회 실패 (provider): providerCode={}", providerCode, e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* OBP API 목록 조회 (기관별, v2)
|
||||
*
|
||||
* @param providerCode Provider 코드 (KJB만 허용, 대소문자 무시)
|
||||
* @param partnerCode 기관코드 (OBP 파트너코드)
|
||||
* @param pretty true면 JSON 들여쓰기 적용
|
||||
* @return JSON Array (기관 미존재 시 빈 배열)
|
||||
*/
|
||||
@RequestMapping(
|
||||
value = "/api/apis.json",
|
||||
params = {"providerCode", "partnerCode"},
|
||||
produces = JSON_CONTENT_TYPE
|
||||
)
|
||||
@ResponseBody
|
||||
public String getApisByProviderAndPartner(
|
||||
@RequestParam("providerCode") String providerCode,
|
||||
@RequestParam("partnerCode") String partnerCode,
|
||||
@RequestParam(value = "pretty", required = false) Boolean pretty) {
|
||||
|
||||
log.debug("OBP API 목록 조회 요청 (provider+partner): providerCode={}, partnerCode={}, pretty={}",
|
||||
providerCode, partnerCode, pretty);
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
// 1. providerCode 검증
|
||||
ProviderCodeValidator.validateProviderCode(providerCode);
|
||||
|
||||
// 2. 데이터소스 설정
|
||||
DataSourceContextHolder.setDataSourceType(
|
||||
DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.APIGW));
|
||||
|
||||
try {
|
||||
// 3. 기관별 API 조회
|
||||
List<ObpApiDTO> apis = obpApiService.findApisByOrgCode(partnerCode);
|
||||
|
||||
String json = toJson(apis, pretty);
|
||||
|
||||
long elapsed = System.currentTimeMillis() - startTime;
|
||||
log.info("OBP API 목록 조회 완료 (provider+partner): providerCode={}, partnerCode={}, count={}, size={}, elapsed={}ms",
|
||||
providerCode, partnerCode, apis.size(), getFormattedJsonSize(json), elapsed);
|
||||
|
||||
return json;
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("OBP API 목록 조회 실패 (provider+partner): providerCode={}, partnerCode={}",
|
||||
providerCode, partnerCode, e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 전체 API 목록 조회
|
||||
*
|
||||
* @param pretty true면 JSON 들여쓰기 적용
|
||||
* @return JSON Array
|
||||
* @deprecated Use {@link #getApisV2(Boolean)} or {@link #getApisByProvider(String, Boolean)} instead.
|
||||
* Will be removed in next major version.
|
||||
*/
|
||||
@Deprecated
|
||||
@RequestMapping(
|
||||
value = "/kjb/apis.json",
|
||||
produces = JSON_CONTENT_TYPE
|
||||
@@ -78,7 +206,11 @@ public class ObpApiController extends BaseRestController {
|
||||
* @param orgCode 기관코드 (OBP 파트너코드)
|
||||
* @param pretty true면 JSON 들여쓰기 적용
|
||||
* @return JSON Array (기관 미존재 시 빈 배열)
|
||||
* @deprecated Use {@link #getApisByProviderAndPartner(String, String, Boolean)} instead.
|
||||
* Migrate to /api/apis.json?providerCode=KJB&partnerCode={orgCode}
|
||||
* Will be removed in next major version.
|
||||
*/
|
||||
@Deprecated
|
||||
@RequestMapping(
|
||||
value = "/kjb/{orgCode}/apis.json",
|
||||
produces = JSON_CONTENT_TYPE
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.eactive.eai.rms.onl.apim.obp;
|
||||
|
||||
import com.eactive.eai.rms.onl.common.exception.BizException;
|
||||
import com.eactive.eai.rms.common.datasource.DataSourceContextHolder;
|
||||
import com.eactive.eai.rms.common.datasource.DataSourceTypeManager;
|
||||
import com.eactive.eai.rms.onl.apim.common.BaseRestController;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -11,6 +14,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -25,7 +29,10 @@ public class ObpGwMetricController extends BaseRestController {
|
||||
private static final Logger log = LoggerFactory.getLogger(ObpGwMetricController.class);
|
||||
|
||||
private static final DateTimeFormatter PATH_FORMATTER =
|
||||
DateTimeFormatter.ofPattern("yyyy-MM-dd_HH:mm:ss");
|
||||
DateTimeFormatter.ofPattern("yyyy-MM-dd_HH:mm:ss");
|
||||
|
||||
private static final DateTimeFormatter QUERY_PARAM_FORMATTER =
|
||||
DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
||||
|
||||
private final ObpGwMetricManService obpGwMetricManService;
|
||||
|
||||
@@ -33,13 +40,79 @@ public class ObpGwMetricController extends BaseRestController {
|
||||
this.obpGwMetricManService = obpGwMetricManService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 특정 시간대 이후의 GwMetric 데이터 조회 (v2)
|
||||
*
|
||||
* @param timeslice 조회 시작 시간대 (형식: yyyyMMddHHmmss)
|
||||
* @param providerCode Provider 코드 (KJB만 허용, 대소문자 무시)
|
||||
* @param pretty true면 JSON 들여쓰기 적용
|
||||
* @return JSON Array (해당 시간대 이후의 모든 지표)
|
||||
*/
|
||||
@RequestMapping(
|
||||
value = "/api/metrics/after-timeslice.json",
|
||||
produces = JSON_CONTENT_TYPE
|
||||
)
|
||||
@ResponseBody
|
||||
public String getGwMetricsAfterTimesliceV2(
|
||||
@RequestParam("timeslice") String timeslice,
|
||||
@RequestParam("providerCode") String providerCode,
|
||||
@RequestParam(value = "pretty", required = false) Boolean pretty) {
|
||||
|
||||
log.debug("GwMetric after-timeslice 조회 요청 (v2): timeslice={}, providerCode={}, pretty={}",
|
||||
timeslice, providerCode, pretty);
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
try {
|
||||
// 1. providerCode 검증
|
||||
ProviderCodeValidator.validateProviderCode(providerCode);
|
||||
|
||||
// 2. timeslice 파싱 (새 형식: yyyyMMddHHmmss)
|
||||
LocalDateTime targetTime;
|
||||
try {
|
||||
targetTime = LocalDateTime.parse(timeslice, QUERY_PARAM_FORMATTER);
|
||||
} catch (DateTimeParseException e) {
|
||||
throw new BizException(
|
||||
String.format("Invalid timeslice format. Expected 'yyyyMMddHHmmss', got: %s", timeslice), e);
|
||||
}
|
||||
|
||||
// 3. 시간을 정각으로 truncate
|
||||
LocalDateTime timesliceHour = targetTime.withMinute(0).withSecond(0).withNano(0);
|
||||
|
||||
// 4. 데이터소스 설정 (MONITORING)
|
||||
DataSourceContextHolder.setDataSourceType(
|
||||
DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.MONITORING));
|
||||
|
||||
// 5. 데이터 조회
|
||||
List<ObpGwMetricAfterDTO> metrics = obpGwMetricManService.findByTimesliceAfter(timesliceHour);
|
||||
|
||||
// 6. JSON 변환
|
||||
String json = toJson(metrics, pretty);
|
||||
|
||||
long elapsed = System.currentTimeMillis() - startTime;
|
||||
log.info("GwMetric after-timeslice 조회 완료 (v2): timeslice={}, providerCode={}, count={}, size={}, elapsed={}ms",
|
||||
timeslice, providerCode, metrics.size(), getFormattedJsonSize(json), elapsed);
|
||||
|
||||
return json;
|
||||
|
||||
} catch (BizException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
log.error("GwMetric after-timeslice 조회 실패 (v2): timeslice={}, providerCode={}",
|
||||
timeslice, providerCode, e);
|
||||
throw new BizException("Failed to retrieve metrics: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 특정 시간대의 GwMetric 데이터 조회
|
||||
*
|
||||
* @param datetime 조회 시간대 (형식: yyyy-MM-dd_HH:mm:ss)
|
||||
* @param pretty true면 JSON 들여쓰기 적용
|
||||
* @return JSON Array
|
||||
* @deprecated Use {@link #getGwMetricsAfterTimesliceV2(String, String, Boolean)} instead.
|
||||
* Will be removed in next major version.
|
||||
*/
|
||||
@Deprecated
|
||||
@RequestMapping(
|
||||
value = "/kjb/gw-metrics/{datetime}.json",
|
||||
produces = JSON_CONTENT_TYPE
|
||||
@@ -80,7 +153,11 @@ public class ObpGwMetricController extends BaseRestController {
|
||||
* @param datetime 조회 시작 시간대 (형식: yyyy-MM-dd_HH:mm:ss)
|
||||
* @param pretty true면 JSON 들여쓰기 적용
|
||||
* @return JSON Array (해당 시간대 이후의 모든 지표)
|
||||
* @deprecated Use {@link #getGwMetricsAfterTimesliceV2(String, String, Boolean)} instead.
|
||||
* Migrate to /api/metrics/after-timeslice.json?timeslice={yyyyMMddHHmmss}&providerCode=KJB
|
||||
* Will be removed in next major version.
|
||||
*/
|
||||
@Deprecated
|
||||
@RequestMapping(
|
||||
value = "/kjb/gw-metrics/after-timeslice/{datetime}.json",
|
||||
produces = JSON_CONTENT_TYPE
|
||||
|
||||
Reference in New Issue
Block a user