문제
const getData = await axios
.get(
`${BASE_URL}/${METHOD}?page=1&perPage=1500&serviceKey=${SERVICE_KEY}`,
)
.then((res) =>
res.data.data.filter(
(list: any) => parseInt(list.RCEPT_ENDDE.split('-').join('')) >= today,
),
);
- 기존 구조: API를 이용해서 1500개에 달하는 전체 데이터를 불러온 이후에 필요한 데이터만 필터링하면 3개밖에 남지 않는다.
- 3개의 데이터를 위해 1500개의 데이터를 모두 불러와야 하는 비효율적 구조.
원인
이러한 문제는 API문서를 꼼꼼하게 읽어보지 않은 것에서 발생됐다.
차근차근히 위에서 부터 읽어내려가다 [요청 메시지 명세] 라는 것을 찾았다.
a) 요청 메시지 명세
항목명(영문) 항목명(국문) 항목크기 항목구분 샘플데이터 항목설명
house_manage_no | 주택관리번호 | 10 | 0 | (EQ) 2022000248 | (Equal) 주택관리번호 |
pblanc_no | 공고번호 | 10 | 0 | (EQ) 2022000248 | (Equal) 공고번호 |
subscrpt_area_code_nm | 공급지역명 | 500 | 0 | (EQ) 서울 | (Equal) 공급지역명 |
rcrit_pblanc_de | 모집공고일 | 10 | 0 | (LT) | (Little) < ‘YYYY-MM-DD’ |
(LTE) | |||||
2022-05-31 | (Little or Equal) <= ‘YYYY-MM-DD’ | ||||
(GT) | (Greater) > ‘YYYY-MM-DD’ | ||||
(GTE) | |||||
2022-01-01 | (Greater or Equal) >= ‘YYYY-MM-DD’ |
※ 항목구분 : 필수(1), 옵션(0), 1건 이상 복수건(1..n), 0건 또는 복수건(0..n)
요청 메시지 예제를 보면서 URL 하나하나씩 끊어서 보니 답이 나왔다.
https://api.odcloud.kr/api/ApplyhomeInfoDetailSvc/v1/getAPTLttotPblancDetail?page=1&perPage=10&cond[HOUSE_MANAGE_NO%3A%3AEQ]=2022000248&cond[PBLANC_NO%3A%3AEQ]=2022000248&cond[SUBSCRPT_AREA_CODE_NM%3A%3AEQ]=서울&cond[RCRIT_PBLANC_DE%3A%3ALTE]=2022-05-31&cond[RCRIT_PBLANC_DE%3A%3AGTE]=2022-01-01&serviceKey=서비스키
해결
<https://api.odcloud.kr/api/ApplyhomeInfoDetailSvc/v1/getAPTLttotPblancDetail?page=1&perPage=10>
&cond%5B
HOUSE_MANAGE_NO%3A%3AEQ%5D=2022000248
&cond%5B
PBLANC_NO%3A%3AEQ%5D=2022000248
&cond%
5BSUBSCRPT_AREA_CODE_NM%3A%3AEQ%5D=%EC%84%9C%EC%9A%B8
&cond%5B
RCRIT_PBLANC_DE%3A%3ALTE%5D=2022-05-31
&cond%5B
RCRIT_PBLANC_DE%3A%3AGTE%5D=2022-01-01
&serviceKey=서비스키
위의 예제를 쪼개보니 요청메시지를 적절하게 활용하면 굳이 모든 데이터를 받지 않아도 된다는 것이다 !!!
그래서 나는 2023년 1월 1일 이후에 모집공고한 것들만 데이터를 받아보고 싶어
<https://api.odcloud.kr/api/ApplyhomeInfoDetailSvc/v1/getAPTLttotPblancDetail?page=1&perPage=10>
&cond%5B
RCRIT_PBLANC_DE%3A%3AGTE%5D=2023-01-01
&serviceKey=서비스키
이렇게 요청했더니
2023년 이후 모집공고한 딱 5개의 데이터만 받을 수 있었다.
이렇게하여 클라이언트 사이드에서 굳이 필터를 할 일도 없고 더 빨리 데이터를 받아 올수 있게 되었다.
'개발 일지 > 토이 프로젝트' 카테고리의 다른 글
[Next.Js] Next.Script를 활용한 지도 개선 (0) | 2023.03.08 |
---|---|
RN 토이프로젝트 회고 (0) | 2023.01.16 |
RN-이미지 변경 및 업로드 (0) | 2023.01.13 |
최신순으로 나누기 (0) | 2023.01.12 |
firebase 사용자 재인증 (0) | 2023.01.11 |