From 1affd1e6b759dbfe586780d28ae84c28ede57b4e Mon Sep 17 00:00:00 2001 From: Rinjae Date: Mon, 19 Jan 2026 09:31:33 +0900 Subject: [PATCH] =?UTF-8?q?OBP=20API=20=EC=A3=BC=EC=86=8C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/WEB-INF/web.xml | 4 + WebContent/WEB-INF/weblogic-web.xml | 4 + kjb-docs/obp-api-guide.md | 159 ++++++++---------- .../rms/onl/apim/obp/ObpApiController.java | 79 +++------ .../onl/apim/obp/ObpGwMetricController.java | 13 +- 5 files changed, 101 insertions(+), 158 deletions(-) diff --git a/WebContent/WEB-INF/web.xml b/WebContent/WEB-INF/web.xml index 1416b0a..f52ffc0 100644 --- a/WebContent/WEB-INF/web.xml +++ b/WebContent/WEB-INF/web.xml @@ -106,6 +106,10 @@ springapp *.file + + springapp + /api/* + /emergency.jsp diff --git a/WebContent/WEB-INF/weblogic-web.xml b/WebContent/WEB-INF/weblogic-web.xml index 78dcfc4..9521a95 100644 --- a/WebContent/WEB-INF/weblogic-web.xml +++ b/WebContent/WEB-INF/weblogic-web.xml @@ -111,6 +111,10 @@ springapp *.file + + springapp + /api/* + /emergency.jsp diff --git a/kjb-docs/obp-api-guide.md b/kjb-docs/obp-api-guide.md index 29e6e44..09697ce 100644 --- a/kjb-docs/obp-api-guide.md +++ b/kjb-docs/obp-api-guide.md @@ -15,13 +15,14 @@ OBP (OpenBanking Platform) API는 API Gateway의 메트릭 데이터와 API 정 OBP API는 모든 요청에서 `providerCode` 파라미터로 권한을 검증합니다. - **허용 값**: `KJB` (대소문자 무시: `kjb`, `Kjb` 등 모두 가능) -- **검증**: 요청 시 providerCode가 명시적으로 포함되어야 합니다 +- **검증**: 요청 시 providerCode가 반드시 포함되어야 합니다 (필수 파라미터) +- **검증 실패**: 유효하지 않은 providerCode는 `BizException` 에러 발생 **예시**: ``` -GET /api/apis.json?providerCode=KJB -GET /api/apis.json?providerCode=kjb -GET /api/metrics/after-timeslice.json?timeslice=20251202030000&providerCode=KJB +GET /api/apis/KJB +GET /api/apis/000008-01/KJB +GET /api/metrics/afterTimeslice/20251202030000/KJB ``` ## API 엔드포인트 @@ -31,15 +32,19 @@ GET /api/metrics/after-timeslice.json?timeslice=20251202030000&providerCode=KJB #### 요청 ```http -GET /api/apis.json +GET /api/apis/{providerCode} ``` +**경로 파라미터**: +- `providerCode` (필수): Provider 코드 (KJB만 허용, 대소문자 무시) + **쿼리 파라미터**: - `pretty` (선택): `true`면 JSON을 들여쓰기 형식으로 반환 **예시**: ```bash -curl "http://localhost:8080/monitoring/api/apis.json?pretty=true" +curl "http://localhost:8080/monitoring/api/apis/KJB" +curl "http://localhost:8080/monitoring/api/apis/kjb?pretty=true" ``` #### 응답 @@ -67,34 +72,6 @@ curl "http://localhost:8080/monitoring/api/apis.json?pretty=true" - `status` (string): 상태 (1=활성) - `description` (string): 설명 -**HTTP 상태 코드**: -- `200 OK`: 조회 성공 -- `500 Internal Server Error`: 서버 오류 - ---- - -### 2. API 목록 조회 (providerCode 검증) - -#### 요청 - -```http -GET /api/apis.json?providerCode=KJB -``` - -**쿼리 파라미터**: -- `providerCode` (필수): Provider 코드 (KJB만 허용, 대소문자 무시) -- `pretty` (선택): `true`면 JSON을 들여쓰기 형식으로 반환 - -**예시**: -```bash -curl "http://localhost:8080/monitoring/api/apis.json?providerCode=KJB&pretty=true" -curl "http://localhost:8080/monitoring/api/apis.json?providerCode=kjb" -``` - -#### 응답 - -전체 API 목록 (응답 형식은 엔드포인트 1과 동일) - **HTTP 상태 코드**: - `200 OK`: 조회 성공 - `400 Bad Request`: 유효하지 않은 providerCode @@ -108,23 +85,25 @@ curl "http://localhost:8080/monitoring/api/apis.json?providerCode=kjb" --- -### 3. API 목록 조회 (기관별) +### 2. API 목록 조회 (기관별) #### 요청 ```http -GET /api/apis.json?providerCode=KJB&partnerCode={orgCode} +GET /api/apis/{orgCode}/{providerCode} ``` -**쿼리 파라미터**: +**경로 파라미터**: +- `orgCode` (필수): 기관코드 (OBP 파트너코드) - `providerCode` (필수): Provider 코드 (KJB만 허용, 대소문자 무시) -- `partnerCode` (필수): 기관코드 (OBP 파트너코드) + +**쿼리 파라미터**: - `pretty` (선택): `true`면 JSON을 들여쓰기 형식으로 반환 **예시**: ```bash -curl "http://localhost:8080/monitoring/api/apis.json?providerCode=KJB&partnerCode=000008-01&pretty=true" -curl "http://localhost:8080/monitoring/api/apis.json?providerCode=kjb&partnerCode=000008-01" +curl "http://localhost:8080/monitoring/api/apis/000008-01/KJB" +curl "http://localhost:8080/monitoring/api/apis/000008-01/kjb?pretty=true" ``` #### 응답 @@ -137,30 +116,32 @@ curl "http://localhost:8080/monitoring/api/apis.json?providerCode=kjb&partnerCod **HTTP 상태 코드**: - `200 OK`: 조회 성공 (데이터 있음 또는 없음) -- `400 Bad Request`: 유효하지 않은 providerCode 또는 partnerCode +- `400 Bad Request`: 유효하지 않은 providerCode 또는 orgCode - `500 Internal Server Error`: 서버 오류 --- -### 4. GwMetric 데이터 조회 (시간대 이후) +### 3. GwMetric 데이터 조회 (시간대 이후) #### 요청 ```http -GET /api/metrics/after-timeslice.json?timeslice={yyyyMMddHHmmss}&providerCode=KJB +GET /api/metrics/afterTimeslice/{timeslice}/{providerCode} ``` -**쿼리 파라미터**: +**경로 파라미터**: - `timeslice` (필수): 조회 시작 시간대 (형식: `yyyyMMddHHmmss`) - 예: `20251202030000` (2025-12-02 03:00:00) - 분/초는 자동으로 정각(00:00)으로 처리됩니다 - `providerCode` (필수): Provider 코드 (KJB만 허용, 대소문자 무시) + +**쿼리 파라미터**: - `pretty` (선택): `true`면 JSON을 들여쓰기 형식으로 반환 **예시**: ```bash -curl "http://localhost:8080/monitoring/api/metrics/after-timeslice.json?timeslice=20251202030000&providerCode=KJB" -curl "http://localhost:8080/monitoring/api/metrics/after-timeslice.json?timeslice=20251202030000&providerCode=kjb&pretty=true" +curl "http://localhost:8080/monitoring/api/metrics/afterTimeslice/20251202030000/KJB" +curl "http://localhost:8080/monitoring/api/metrics/afterTimeslice/20251202030000/kjb?pretty=true" ``` #### 응답 @@ -213,7 +194,7 @@ curl "http://localhost:8080/monitoring/api/metrics/after-timeslice.json?timeslic async function getAllApis() { try { const response = await fetch( - 'http://localhost:8080/monitoring/api/apis.json?pretty=true' + 'http://localhost:8080/monitoring/api/apis/KJB?pretty=true' ); if (!response.ok) { @@ -232,7 +213,7 @@ async function getAllApis() { async function getApisByPartner(partnerCode) { try { const response = await fetch( - `http://localhost:8080/monitoring/api/apis.json?providerCode=KJB&partnerCode=${partnerCode}&pretty=true` + `http://localhost:8080/monitoring/api/apis/${partnerCode}/KJB?pretty=true` ); if (!response.ok) { @@ -251,7 +232,7 @@ async function getApisByPartner(partnerCode) { async function getMetricsAfterTimeslice(timeslice) { try { const response = await fetch( - `http://localhost:8080/monitoring/api/metrics/after-timeslice.json?timeslice=${timeslice}&providerCode=KJB&pretty=true` + `http://localhost:8080/monitoring/api/metrics/afterTimeslice/${timeslice}/KJB?pretty=true` ); if (!response.ok) { @@ -282,7 +263,7 @@ const BASE_URL = 'http://localhost:8080/monitoring/api'; // 1. API 전체 목록 조회 async function getAllApis() { try { - const response = await axios.get(`${BASE_URL}/apis.json`, { + const response = await axios.get(`${BASE_URL}/apis/KJB`, { params: { pretty: true } }); console.log('All APIs:', response.data); @@ -295,12 +276,8 @@ async function getAllApis() { // 2. 기관별 API 목록 조회 async function getApisByPartner(partnerCode) { try { - const response = await axios.get(`${BASE_URL}/apis.json`, { - params: { - providerCode: 'KJB', - partnerCode: partnerCode, - pretty: true - } + const response = await axios.get(`${BASE_URL}/apis/${partnerCode}/KJB`, { + params: { pretty: true } }); console.log(`APIs for ${partnerCode}:`, response.data); return response.data; @@ -312,12 +289,8 @@ async function getApisByPartner(partnerCode) { // 3. GwMetric 데이터 조회 async function getMetricsAfterTimeslice(timeslice) { try { - const response = await axios.get(`${BASE_URL}/metrics/after-timeslice.json`, { - params: { - timeslice: timeslice, - providerCode: 'KJB', - pretty: true - } + const response = await axios.get(`${BASE_URL}/metrics/afterTimeslice/${timeslice}/KJB`, { + params: { pretty: true } }); console.log(`Metrics after ${timeslice}:`, response.data); return response.data; @@ -341,25 +314,19 @@ public class ObpApiClient { // 1. API 전체 목록 조회 public List getAllApis() { - String url = BASE_URL + "/apis.json?pretty=true"; + String url = BASE_URL + "/apis/KJB?pretty=true"; return restTemplate.getForObject(url, List.class); } // 2. 기관별 API 목록 조회 public List getApisByPartner(String partnerCode) { - String url = BASE_URL + "/apis.json?" + - "providerCode=KJB&" + - "partnerCode=" + partnerCode + "&" + - "pretty=true"; + String url = BASE_URL + "/apis/" + partnerCode + "/KJB?pretty=true"; return restTemplate.getForObject(url, List.class); } // 3. GwMetric 데이터 조회 public List getMetricsAfterTimeslice(String timeslice) { - String url = BASE_URL + "/metrics/after-timeslice.json?" + - "timeslice=" + timeslice + "&" + - "providerCode=KJB&" + - "pretty=true"; + String url = BASE_URL + "/metrics/afterTimeslice/" + timeslice + "/KJB?pretty=true"; return restTemplate.getForObject(url, List.class); } @@ -386,16 +353,16 @@ public class ObpApiClient { ```bash # 1. API 전체 목록 조회 -curl "http://localhost:8080/monitoring/api/apis.json?pretty=true" +curl "http://localhost:8080/monitoring/api/apis/KJB?pretty=true" +curl "http://localhost:8080/monitoring/api/apis/kjb" # 2. 기관별 API 목록 조회 -curl "http://localhost:8080/monitoring/api/apis.json?providerCode=KJB&partnerCode=000008-01&pretty=true" +curl "http://localhost:8080/monitoring/api/apis/000008-01/KJB?pretty=true" +curl "http://localhost:8080/monitoring/api/apis/000008-01/kjb" # 3. GwMetric 데이터 조회 -curl "http://localhost:8080/monitoring/api/metrics/after-timeslice.json?timeslice=20251202030000&providerCode=KJB&pretty=true" - -# providerCode를 소문자로 전송 -curl "http://localhost:8080/monitoring/api/apis.json?providerCode=kjb" +curl "http://localhost:8080/monitoring/api/metrics/afterTimeslice/20251202030000/KJB?pretty=true" +curl "http://localhost:8080/monitoring/api/metrics/afterTimeslice/20251202030000/kjb" ``` --- @@ -434,13 +401,13 @@ curl "http://localhost:8080/monitoring/api/apis.json?providerCode=kjb" ``` GET /kjb/apis.json ↓ -GET /api/apis.json?providerCode=KJB +GET /api/apis/{providerCode} ``` ``` GET /kjb/{orgCode}/apis.json ↓ -GET /api/apis.json?providerCode=KJB&partnerCode={orgCode} +GET /api/apis/{orgCode}/{providerCode} ``` **예시**: @@ -453,8 +420,8 @@ curl "http://localhost:8080/monitoring/kjb/000008-01/apis.json" 새로운: ```bash -curl "http://localhost:8080/monitoring/api/apis.json?providerCode=KJB" -curl "http://localhost:8080/monitoring/api/apis.json?providerCode=KJB&partnerCode=000008-01" +curl "http://localhost:8080/monitoring/api/apis/KJB" +curl "http://localhost:8080/monitoring/api/apis/000008-01/KJB" ``` #### ObpGwMetricController @@ -464,13 +431,13 @@ curl "http://localhost:8080/monitoring/api/apis.json?providerCode=KJB&partnerCod ``` GET /kjb/gw-metrics/{datetime}.json ↓ -GET /api/metrics/after-timeslice.json?timeslice={yyyyMMddHHmmss}&providerCode=KJB +GET /api/metrics/afterTimeslice/{timeslice}/{providerCode} ``` ``` GET /kjb/gw-metrics/after-timeslice/{datetime}.json ↓ -GET /api/metrics/after-timeslice.json?timeslice={yyyyMMddHHmmss}&providerCode=KJB +GET /api/metrics/afterTimeslice/{timeslice}/{providerCode} ``` **datetime 형식 변환**: @@ -491,7 +458,7 @@ curl "http://localhost:8080/monitoring/kjb/gw-metrics/after-timeslice/2025-12-02 새로운: ```bash -curl "http://localhost:8080/monitoring/api/metrics/after-timeslice.json?timeslice=20251202030000&providerCode=KJB" +curl "http://localhost:8080/monitoring/api/metrics/afterTimeslice/20251202030000/KJB" ``` --- @@ -500,7 +467,7 @@ curl "http://localhost:8080/monitoring/api/metrics/after-timeslice.json?timeslic ### Q1: providerCode는 무엇인가요? -**A**: providerCode는 API 접근 권한을 검증하는 파라미터입니다. 현재 OBP API는 "KJB" (광주은행)만 허용합니다. +**A**: providerCode는 API 접근 권한을 검증하는 필수 파라미터입니다. 현재 OBP API는 "KJB" (광주은행)만 허용합니다. ### Q2: providerCode 대소문자를 혼합해도 되나요? @@ -534,18 +501,26 @@ curl "http://localhost:8080/monitoring/api/metrics/after-timeslice.json?timeslic ### Q8: API 응답 시간은 어느 정도인가요? -**A**: 응답 헤더에 `elapsed` 정보가 포함됩니다. 로그에서도 확인할 수 있습니다. +**A**: 응답 로그에 `elapsed` 정보가 포함됩니다. 로그에서도 확인할 수 있습니다. + +### Q9: providerCode를 생략할 수 있나요? + +**A**: 아니요, providerCode는 필수 파라미터입니다. 반드시 URL 경로에 포함되어야 합니다. --- ## 최신 변경사항 -### v2.0 (2025-01-18) +### v2.0 (2025-01-19) -- **새로운 `/api/*` 경로**: 기존 `/kjb/*` 경로 대신 새로운 경로 제공 -- **providerCode 검증**: 모든 엔드포인트에 providerCode 파라미터 추가 -- **timeslice 형식 변경**: `yyyy-MM-dd_HH:mm:ss` → `yyyyMMddHHmmss` -- **레거시 엔드포인트 Deprecated**: 기존 `/kjb/*` 엔드포인트는 계속 지원되지만 향후 제거 예정 +- **새로운 `/api/*` 경로**: RESTful 규칙 준수 + - `/api/apis/{providerCode}` - 전체 API 목록 + - `/api/apis/{orgCode}/{providerCode}` - 기관별 API 목록 + - `/api/metrics/afterTimeslice/{timeslice}/{providerCode}` - GwMetric 데이터 +- **Path 변수 기반**: 모든 providerCode/timeslice를 경로 변수로 변경 +- **providerCode 검증**: 모든 엔드포인트에서 필수 검증 (KJB 대소문자 무시) +- **timeslice 형식**: `yyyy-MM-dd_HH:mm:ss` → `yyyyMMddHHmmss` +- **레거시 엔드포인트 유지**: `/kjb/*` 경로는 당분간 지원 (Deprecated) **마이그레이션 권장**: 가능한 한 빨리 새로운 경로로 업데이트하세요. @@ -561,5 +536,5 @@ curl "http://localhost:8080/monitoring/api/metrics/after-timeslice.json?timeslic --- -**마지막 업데이트**: 2025-01-18 +**마지막 업데이트**: 2025-01-19 **API 버전**: 2.0 diff --git a/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiController.java b/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiController.java index d354d17..189502a 100644 --- a/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiController.java +++ b/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiController.java @@ -34,53 +34,17 @@ public class ObpApiController extends BaseRestController { /** * 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 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 - ) + @RequestMapping(value = "/api/apis/{providerCode}", produces = JSON_CONTENT_TYPE) @ResponseBody - public String getApisByProvider( - @RequestParam("providerCode") String providerCode, + public String getApisV2( + @PathVariable("providerCode") String providerCode, @RequestParam(value = "pretty", required = false) Boolean pretty) { - log.debug("OBP API 목록 조회 요청 (provider): providerCode={}, pretty={}", providerCode, pretty); + log.debug("OBP API 목록 조회 요청 (v2): providerCode={}, pretty={}", providerCode, pretty); long startTime = System.currentTimeMillis(); // 1. providerCode 검증 @@ -96,13 +60,13 @@ public class ObpApiController extends BaseRestController { String json = toJson(apis, pretty); long elapsed = System.currentTimeMillis() - startTime; - log.info("OBP API 목록 조회 완료 (provider): providerCode={}, count={}, size={}, elapsed={}ms", + log.info("OBP API 목록 조회 완료 (v2): providerCode={}, count={}, size={}, elapsed={}ms", providerCode, apis.size(), getFormattedJsonSize(json), elapsed); return json; } catch (Exception e) { - log.error("OBP API 목록 조회 실패 (provider): providerCode={}", providerCode, e); + log.error("OBP API 목록 조회 실패 (v2): providerCode={}", providerCode, e); throw e; } } @@ -110,24 +74,23 @@ public class ObpApiController extends BaseRestController { /** * OBP API 목록 조회 (기관별, v2) * + * @param orgCode 기관코드 (OBP 파트너코드) * @param providerCode Provider 코드 (KJB만 허용, 대소문자 무시) - * @param partnerCode 기관코드 (OBP 파트너코드) * @param pretty true면 JSON 들여쓰기 적용 * @return JSON Array (기관 미존재 시 빈 배열) */ @RequestMapping( - value = "/api/apis.json", - params = {"providerCode", "partnerCode"}, + value = "/api/apis/{orgCode}/{providerCode}", produces = JSON_CONTENT_TYPE ) @ResponseBody - public String getApisByProviderAndPartner( - @RequestParam("providerCode") String providerCode, - @RequestParam("partnerCode") String partnerCode, + public String getApisByOrgCodeAndProvider( + @PathVariable("orgCode") String orgCode, + @PathVariable("providerCode") String providerCode, @RequestParam(value = "pretty", required = false) Boolean pretty) { - log.debug("OBP API 목록 조회 요청 (provider+partner): providerCode={}, partnerCode={}, pretty={}", - providerCode, partnerCode, pretty); + log.debug("OBP API 목록 조회 요청 (기관별): orgCode={}, providerCode={}, pretty={}", + orgCode, providerCode, pretty); long startTime = System.currentTimeMillis(); // 1. providerCode 검증 @@ -139,19 +102,19 @@ public class ObpApiController extends BaseRestController { try { // 3. 기관별 API 조회 - List apis = obpApiService.findApisByOrgCode(partnerCode); + List apis = obpApiService.findApisByOrgCode(orgCode); 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); + log.info("OBP API 목록 조회 완료 (기관별): orgCode={}, providerCode={}, count={}, size={}, elapsed={}ms", + orgCode, providerCode, apis.size(), getFormattedJsonSize(json), elapsed); return json; } catch (Exception e) { - log.error("OBP API 목록 조회 실패 (provider+partner): providerCode={}, partnerCode={}", - providerCode, partnerCode, e); + log.error("OBP API 목록 조회 실패 (기관별): orgCode={}, providerCode={}", + orgCode, providerCode, e); throw e; } } @@ -161,7 +124,7 @@ public class ObpApiController extends BaseRestController { * * @param pretty true면 JSON 들여쓰기 적용 * @return JSON Array - * @deprecated Use {@link #getApisV2(Boolean)} or {@link #getApisByProvider(String, Boolean)} instead. + * @deprecated Use {@link #getApisV2(String, Boolean)} instead. * Will be removed in next major version. */ @Deprecated @@ -206,8 +169,8 @@ 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} + * @deprecated Use {@link #getApisByOrgCodeAndProvider(String, String, Boolean)} instead. + * Migrate to /api/apis/{orgCode}/{providerCode} * Will be removed in next major version. */ @Deprecated diff --git a/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpGwMetricController.java b/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpGwMetricController.java index 4efd759..c2647f7 100644 --- a/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpGwMetricController.java +++ b/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpGwMetricController.java @@ -32,7 +32,7 @@ public class ObpGwMetricController extends BaseRestController { DateTimeFormatter.ofPattern("yyyy-MM-dd_HH:mm:ss"); private static final DateTimeFormatter QUERY_PARAM_FORMATTER = - DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); + DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); private final ObpGwMetricManService obpGwMetricManService; @@ -49,13 +49,13 @@ public class ObpGwMetricController extends BaseRestController { * @return JSON Array (해당 시간대 이후의 모든 지표) */ @RequestMapping( - value = "/api/metrics/after-timeslice.json", + value = "/api/metrics/afterTimeslice/{timeslice}/{providerCode}", produces = JSON_CONTENT_TYPE ) @ResponseBody public String getGwMetricsAfterTimesliceV2( - @RequestParam("timeslice") String timeslice, - @RequestParam("providerCode") String providerCode, + @PathVariable("timeslice") String timeslice, + @PathVariable("providerCode") String providerCode, @RequestParam(value = "pretty", required = false) Boolean pretty) { log.debug("GwMetric after-timeslice 조회 요청 (v2): timeslice={}, providerCode={}, pretty={}", @@ -109,10 +109,7 @@ 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. - * Will be removed in next major version. */ - @Deprecated @RequestMapping( value = "/kjb/gw-metrics/{datetime}.json", produces = JSON_CONTENT_TYPE @@ -154,7 +151,7 @@ public class ObpGwMetricController extends BaseRestController { * @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 + * Migrate to /api/metrics/afterTimeslice/{timeslice}/{providerCode} * Will be removed in next major version. */ @Deprecated