2025. 6. 26. 12:38ใJavaScript/Node.js
๐ฅ ์ค์ต์ผ๋ก ์์ ํ ์ฒด๋ํ jQuery AJAX + ์ํ API ์ฐ๋
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ณต๋ถํ๋ฉด์ "AJAX"์ "๋น๋๊ธฐ ํต์ ", "JSON ๋ฐ์ดํฐ ์ฒ๋ฆฌ"์ ๋ํ ๊ฐ๋
์ ์ฌ๋ฌ ๋ฒ ๋ค์ด๋ดค์ต๋๋ค.
์ด๋ก ์ ์ผ๋ก๋ ์๊ณ ์์๊ณ , ๊ฐ์๋ ๋ดค์ง๋ง… ์ง์ ์์ผ๋ก ์ค์ตํด๋ณด๊ธฐ ์ ๊น์ง ๊ทธ๊ฒ ์ ์ค์ํ์ง ํผ๋ถ๋ก ๋๋ผ์ง ๋ชปํ์ต๋๋ค.
์ด๋ฒ ์ค์ต์์๋ jQuery์ $.ajax()๋ฅผ ํตํด KOBIS ์ํ์งํฅ์์ํ API๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์, ์ผ์ผ ๋ฐ์ค์คํผ์ค ์ํ ์ ๋ชฉ๋ค์ ๊ฐ์ ธ์ค๋ ์์ ์ ํด๋ณด์์ต๋๋ค.
โ ์ค์ต ๋ชฉํ
- ๋ฒํผ ํด๋ฆญ ์ AJAX๋ก ์ธ๋ถ ์ํ API ์์ฒญ
- ์ฑ๊ณต ์๋ต ์ ์ํ ์์/์ ๋ชฉ์ ์ฝ์์ ์ถ๋ ฅ
- (์ถ๊ฐ ์ค์ต ์์ ) ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ HTML์ ์ถ๋ ฅ
๐ ์ ์ฒด ์ฝ๋ (HTML + JS)
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>์ํ ๋ฐ์ดํฐ ์ค์ต</title>
<script src="jquery-3.7.1.min.js"></script>
</head>
<body>
<button id="btn">์ํ๋ฐ์ดํฐ ์์ฒญ</button>
<ul id="result"></ul>
<script>
$("#btn").on("click", () => {
$.ajax({
url: "http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=๋ณธ์ธAPIKEY&targetDt=20250624",
success: (res) => {
alert("ํต์ ์ฑ๊ณต");
const list = res.boxOfficeResult.dailyBoxOfficeList;
for (const movie of list) {
console.log(`${movie.rank}์ - ${movie.movieNm}`);
}
},
error: () => {
alert("ํต์ ์คํจ");
}
});
});
</script>
</body>
</html>
๐ง JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ถ์
AJAX๋ก ๋ฐ์์จ ๋ฐ์ดํฐ๋ res๋ผ๋ ์๋ต ๊ฐ์ฒด์ ๋ด๊ฒจ ์๊ณ , ์ํ ๋ฆฌ์คํธ๋ ๋ค์ ๊ฒฝ๋ก๋ก ์ ๊ทผํฉ๋๋ค:
res.boxOfficeResult.dailyBoxOfficeList
์ด ์์๋ ์ํ ์ ๋ณด๋ค์ด ๊ฐ์ฒด ํํ๋ก ๋ฐฐ์ด์ ๋ค์ด์์ต๋๋ค. ์:
[
{ "rank": "1", "movieNm": "๋๋๊ณค ๊ธธ๋ค์ด๊ธฐ", ... },
{ "rank": "2", "movieNm": "์ธ์ฌ์ด๋ ์์", ... },
...
]
๊ทธ๋์ ์ํ ์ ๋ชฉ์ ์ ๊ทผํ๋ ค๋ฉด movie.movieNm, ์์๋ movie.rank๋ก ๊บผ๋ผ ์ ์์ด์. ์ด ๋ถ๋ถ์ด ๊ฐ์ฅ ํต์ฌ์ด๊ณ , ์ค๋ฌด API ์ฐ๋์์๋ ๊ตฌ์กฐ ํ์
์ด ์ ์ผ ์ค์ํ๋ค๋ ๊ฑธ ๋๊ผ์ต๋๋ค.
๐ ๋๋ ์
- ์ฒ์์๋ AJAX ๋ฌธ๋ฒ๋ ์์ํ๊ณ ๋ง๋งํ์ง๋ง, ๊ตฌ์กฐ๋ฅผ ๋ฏ์ด๋ณด๋ ๊ฒฐ๊ตญ์ ์์ฒญ → ์๋ต → ๋ฐ์ดํฐ ๊บผ๋ด๊ธฐ์ ๋ฐ๋ณต์ด๋ผ๋ ๊ฑธ ๊นจ๋ฌ์
- JSON ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ(.key / [index])์ด ์ด์ ๋ ์์ ์ต์๊ณ , ๋ค๋ฅธ API๋ ์ถฉ๋ถํ ๋ค๋ฃฐ ์ ์์ ๊ฒ ๊ฐ์ ์์ ๊ฐ์ด ์๊น
- ์ด๋ก ์ผ๋ก๋ง ๊ณต๋ถํ ๋ ์ ๋ ๋ชฐ๋๋ ๊ฒ๋ค์ด, ์ง์ ์ฝ์์ ์ฐ์ด๋ณด๊ณ ์ค๋ฅ๋ ๊ฒช์ผ๋ฉด์ ํ์คํ ๋ด ๊ฒ์ด ๋์๋ค๋ ๋๋
๐ฏ ์ทจ์ค์์ผ๋ก์์ ๋ค์ง
๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ฐ ์ง์๋ฐ ๊ธฐ๋ณธ๋ฒ ์ด์ค๋ฅผ ๊ฐํ์ํค๋ฉฐ ๊ณต๋ถ๋ฅผ ํ๋ฉด ์ ๋ง ์๋ง์ ๋ฌธ๋ฒ๊ณผ ๊ฐ๋
๋ค์ ์ ํฉ๋๋ค.
ํ์ง๋ง ๊ทธ ์ค์์๋ ์ด๋ ๊ฒ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค๋ณด๋ ๊ฒฝํ์ ์ค๋ฌด์ ๊ฐ์ฅ ๋ฎ์์๋ ํ๋ จ์ด๋ผ๋ ๊ฑธ ์๊ฒ ๋์์ต๋๋ค.
์์ผ๋ก๋ JSON์ ๋ถ๋ฌ์ ์ถ๋ ฅํ๋ ๊ฒ์ ๊ทธ์น์ง ์๊ณ , ์ด๋ฌํ ๋ด์ฉ๋ค์ ๋ฐฑ์๋์ ์ฐ๊ด์ง์ด ์ ์ฒด์ ์ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์์๊ฐ๋ ๊ณผ์ ์ ๊ณต๋ถํ๋ คํฉ๋๋ค.
์ค๋๋ ํ ๊ฑธ์ ์ฑ์ฅํ์ต๋๋ค. ๐
'JavaScript > Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Node.js์ Express.js ์๋ฒ ๊ฐ๋ฐ โ ํฌํธ, ๋ผ์ฐํ , chunk/buffer ์์ ์ดํด (0) | 2025.07.02 |
|---|