๋น๋๊ธฐ ์์ฒญ์ ๊ฐ์ฅ ๋ํ์ ์ธ ์ฌ๋ก๋ ๋คํธ์ํฌ ์์ฒญ์ด๋ฉฐ, ๋คํธ์ํฌ๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ ์์ฒญ์ ๋ค์ํ ํํ๊ฐ ์๋ค.
๊ทธ ์ค์์ URL๋ก ์์ฒญํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๋ฉฐ, URL๋ก ์์ฒญํ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ API๊ฐ fetch API ์ด๋ค.
์๋์ ์์๋ฅผ ๋ณด๋ฉด, ํญ์ ๋์ ์ผ๋ก ๋ณํ๋ ์ ๋ณด์, ๊ณ ์ ์ ์ธ ์ ๋ณด๊ฐ ๋ถ๋ฆฌ๋์ด ์๋๋ฐ, ์ต์ ๋ด์ค๋ ์ค๋ ๋ ์จ(๋ ์จ/๋ฏธ์ธ๋จผ์ง ์ ๋ณด)๋ ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ผํ๋ ์ ๋ณด์ด๋ค.
์ด๋ฐ ๊ฒฝ์ฐ, ํญ์ ๋์ ์ผ๋ก ๋ณํ๋ ์ ๋ณด(๋ด์ค, ๋ ์จ)๋ง ์ ๋ฐ์ดํธํ๊ธฐ ์ํด์๋ ์์ฒญ API๋ฅผ ์ด์ฉํด์ผํ๋๋ฐ, fetch API๋ฅผ ์ด์ฉํด ํด๋น ์ ๋ณด๋ฅผ ์๊ฒฉ URL๋ก๋ถํฐ ๋ถ๋ฌ์ค๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
์๋๋ ์๊ฒฉ URL๋ก๋ถํฐ ์ ๋ณด๋ฅผ ๋ฐ์์์ ํน์ DOM element๋ฅผ ์ ๋ฐ์ดํธํ๋ ์ปจ์ ์ ๋์ํํ ๊ทธ๋ฆผ์ด๋ค.
fetch API๋ ์์ ๊ฐ์ด, ํน์ URL๋ก๋ถํฐ ์ ๋ณด๋ฅผ ๋ฐ์์ค๋ ์ญํ ์ ํ๋ฉฐ, ์ด ๊ณผ์ ์ด ๋น๋๊ธฐ๋ก ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์, ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๋ค.
์ด๋ ๊ฒ ์๊ฐ์ด ์์๋๋ ์์ ์ ์๊ตฌํ ๊ฒฝ์ฐ์๋ blocking์ด ๋ฐ์ํ๋ฉด ์ ๋๋ฏ๋ก, ํน์ DOM์ ์ ๋ณด๊ฐ ํ์๋ ๋๊น์ง ๋ก๋ฉ ์ฐฝ์ ๋์ ๋์ฐ๋ ๊ฒฝ์ฐ๋ ์๋ค.
let url =
"https://koreanjson.com/posts/1";
fetch(url)
.then((response) => response.json())
.then((json) => console.log(json))
.catch((error) => console.log(error));
์์ ์ฝ๋๋ฅผ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ ์ฝ์์ฐฝ์ ์ ๋ ฅ ํ, ์คํํ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
Reference: ์ฝ๋์คํ ์ด์ธ