728x90
펀드 기준가는 위 화면에서 검색할 수 있다. 검색하고 상세 보기하면 아래와 같이 뜬다.
여기서 기준가만 받아오고 싶은데 실시간으로 받을 수 있는 API가 없다.
네트워크 탭에서 잘 비벼보면 XML로 된 API가 있다. URI와 헤더, 페이로드를 딴다.
Node로 세팅한 AWS Lambda 함수를 하나 판다.
export const handler = async (event) => {
const { fundCd } = JSON.parse(event.body);
const fundPrice = await fetchFundPrice(fundCd);
const response = {
statusCode: 200,
body: JSON.stringify({ fundCd, fundPrice }),
};
return response;
};
async function fetchFundPrice(fundCd) {
const url = "https://dis.kofia.or.kr/proframeWeb/XMLSERVICES";
const options = {
method: 'POST',
headers: {
'Content-Type': 'text/xml'
},
body: `<?xml version="1.0" encoding="utf-8"?>
<message>
<proframeHeader>
<pfmAppName>FS-COM</pfmAppName>
<pfmSvcName>COMFundUnityBasInfoSO</pfmSvcName>
<pfmFnName>fundStdcotInfoSrch</pfmFnName>
</proframeHeader>
<systemHeader></systemHeader>
<COMFundUnityInfoInputDTO>
<standardCd>${fundCd}</standardCd>
<companyCd></companyCd>
<standardDt></standardDt>
</COMFundUnityInfoInputDTO>
</message>`
};
const response = await fetch(url, options);
const text = await response.text();
const match = text.match(/<standardCot>([\d.]+)<\/standardCot>/);
return match ? Number.parseFloat(match[1]) : null;
}
XML 파싱을 위한 라이브러리를 깔아도 되지만, 정규표현식으로 대체한다.
{
"body": "{\"fundCd\": \"K55105BU1112\"}"
}
내부 테스트해준다.
구성 > 함수 URL > 함수 URL 생성으로 URL을 판다.
포스트맨으로도 테스팅해준다.
이제 실시간으로 펀드 가격을 받을 수 있다.
'Today_I_Learned' 카테고리의 다른 글
Shell로 BOJ VSCode Java 설정 자동화하기 (Mac 기준) (1) | 2024.01.17 |
---|---|
Playwright로 Colab에서 연합뉴스 크롤링하기 (1) | 2023.12.21 |
[Django DRF] Serializer에서 id를 사용한 M:N 관계 (0) | 2023.11.13 |
AWS API Gateway로 DynamoDB PutItem 메서드 구현 (23.10.13) (1) | 2023.10.14 |
multiprocessing를 통한 병렬 처리 파이썬 코드 예제 (0) | 2023.09.30 |