38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
/**
|
|
* 📄 API Helpers
|
|
* 공통 코드 cs-service API 호출 유틸리티
|
|
*
|
|
* - 검색 데이터 조회 및 파라미터 처리
|
|
* - 상위 코드로 하위 코드 조회 기능
|
|
* - URL 파라미터 생성 및 필터링
|
|
* - 데이터 페이징 및 총 개수 반환
|
|
* - Axios 기반 HTTP 요청 처리
|
|
* - 타입 안전성 보장을 위한 제네릭 활용
|
|
*
|
|
* 🔗 사용 API
|
|
* - 하위코드페이지 캐시 목록 조회: GET /api/v1/code/cache/{upCd} (cms-service)
|
|
*/
|
|
import { getData } from "../api";
|
|
|
|
export const searchData = async<T extends Record<string, any>>(url: string, paramObj: T) => {
|
|
const params = new URLSearchParams(
|
|
Object.entries(paramObj)
|
|
.filter(([_, value]) => value !== undefined && value !== '') // 값이 있는 항목만 포함
|
|
.reduce((acc, [key, value]) => {
|
|
acc[key] = String(value);
|
|
return acc;
|
|
}, {} as Record<string, string>)
|
|
);
|
|
const data = await getData(`${url}?${params.toString()}`);
|
|
return data && { data: data.content, total: data.totalElements }
|
|
}
|
|
|
|
// 상위코드로 하위코드 조회
|
|
export const searchCmmnCd = async (upCd: string) => {
|
|
const data = await getData(`/cms-service/api/v1/code/cache/${upCd}`);
|
|
const filteredData = data.map((item: any) => ({
|
|
lwpoCd: item.lwpoCd,
|
|
lwpoCdNm: item.lwpoCdNm,
|
|
}));
|
|
return filteredData;
|
|
} |