์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- props drilling
- ํ ์คํธ ์์
- css
- BFS์ DFS
- ์คํ ์ด์ธ ์ฝ๋
- prototype
- Effect Hook
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- ํผํฐ ๋ชจ๋น
- Lifting state
- jsx
- State
- css animation
- wai-aria
- Study
- Cmarket
- fetch api
- git
- ๊ณ ์ฐจํจ์
- ๋ฒ๋ค๋ง
- ์๋งจํฑ์์
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- ์ปดํจํฐ ๊ณตํ
- ๋ฒ์ง ๋ชจํ
- ์ ์ด์ฝฅ ๋์จ
- JavaScript
- WEB
- React
- html
- ํ๋ก๊ทธ๋๋จธ์ค
- Today
- Total
roqkf
[JavaScript] fetch API ๋ณธ๋ฌธ
๐ค fetch API๋?
- HTTP ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ๋ ์์ฒญ๊ณผ ์๋ต ๋ฑ์ ์์๋ฅผ JavaScript์์ ์ ๊ทผํ๊ณ ์กฐ์ํ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต
- fetch๋ '๊ฐ์ ธ์ค๋ค'๋ผ๋ ๋ป์ผ๋ก Request๋ Response์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ HTTP ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ๋ ์์๋ฅผ ์กฐ์ํ๊ณ ์๊ฒฉ์ง์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค
- Promise๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค
์๋ฅผ ๋ค๋ฉด ํฌํธ ์ฌ์ดํธ์์ ์์๊ฐ๊ฐ ๋ณํ๋ ์ ๋ณด์ ๋ ๊ณ ์ ์ ์ธ ์ ๋ณด๊ฐ ๋ฐ๋ก ๋ถ๋ฆฌ๋ผ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด ์ค์์ ์ต์ ๋ด์ค, ๋ ์จ/ ๋ฏธ์ธ๋จผ์ง ์ ๋ณด๋ ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ผ ํ๋ ์ ๋ณด๋ค๋ก ์ด๋ด ๋ ๋ง์ ์น์ฌ์ดํธ์์ ํด๋น ์ ๋ณด๋ง ์ ๋ฐ์ดํธํ๊ธฐ ์ํด์ ์์ฒญ API๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ ์ค์์ ๋ํ์ ์ธ Fetch API๋ฅผ ์ด์ฉํด์ ํด๋น ์ ๋ณด๋ฅผ ์๊ฒฉ URL๋ก๋ถํฐ ๋ถ๋ฌ์ค๋ ๊ฒฝ์ฐ, ์๊ฒฉ URL๋ก๋ถํฐ ์ ๋ณด๋ฅผ ๋ฐ์์์ ํน์ ํ DOM ์๋ฆฌ๋จผํธ๋ฅผ ์ ๋ฐ์ดํธํ๋ค. ์ด๋ ๋ฏ, Fetch API๋ ํน์ ํ URL๋ก๋ถํฐ ์ ๋ณด๋ฅผ ๋ฐ์์ค๋ ์ญํ ์ ํ๋๋ฐ ์ด ๊ณผ์ ์ด ๋น๋๊ธฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๋ค. ์ด๋ ๊ฒ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์ ์ด ์๊ตฌ๋ ๋๋ blocking์ด ๋ฐ์ํด์๋ ์ ๋๋ฏ๋ก, ํน์ DOM์ ์ ๋ณด๊ฐ ํ์๋ ๋๊น์ง ๋ก๋ฉ ์ฐฝ์ ๋์ ๋์ฐ๋ ๊ฒฝ์ฐ๋ ์๋ค.
๐ค HTTP๋?
- ํ์ดํผํ ์คํธ ์ ์ก ํ๋กํ ์ฝ์ HTML๊ณผ ๊ฐ์ ํ์ดํผ๋ฏธ๋์ด ๋ฌธ์๋ฅผ ์ ์กํ๊ธฐ ์ํ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์ด์ด ํ๋กํ ์ฝ
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์ด๋ฃจ์ด์ง๋ ์์ฒญ/์๋ต ํ๋กํ ์ฝ
์๋ฅผ ๋ค๋ฉด ์น ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)๊ฐ HTTP๋ฅผ ํตํด ์๋ฒ๋ก๋ถํฐ ์นํ์ด์ง๋ ๊ทธ๋ฆผ ์ ๋ณด๋ฅผ ์์ฒญํ๋ฉด ์๋ฒ๋ ์ด ์์ฒญ์ ์๋ตํ์ฌ ํ์ํ ์ ๋ณด๋ฅผ ํด๋น ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๊ฒ ๋๋ค. ์ด ์ ๋ณด๊ฐ ๋ชจ๋ํฐ์ ๊ฐ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ํตํด ์ฌ์ฉ์์๊ฒ ๋ํ๋๋ ๊ฒ.
๐ฅ fetch API ์ฌ์ฉ๋ฒ
- fetch API๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ ์์ฒญํ๊ธฐ
fetch(url, options)
.then((response) => console.log("response:", response))
.catch((error) => console.log("error:", error));
- fetch(url): ํจ์์ ์ฒซ๋ฒ์งธ ์ธ์๋ก URL๋ฅผ ๋ฐ๋๋ค
- fetch(options): ํจ์์ ๋๋ฒ์งธ ์ธ์๋ก ์ต์
๊ฐ์ฒด๋ฅผ ๋ฐ์ผ๋ฉฐ Promise ํ์
์ ๊ฐ์ฒด๋ฅผ ๋ฐํ
-> ๋ฐํ๋ ๊ฐ์ฒด๊ฐ API์ ํธ์ถ์ ์ฑ๊ณตํ์ ๋๋ ์๋ต(response) ๊ฐ์ฒด๋ฅผ resolveํ๋ฉฐ, ์คํจํ์ ๋๋ ์์ธ(error) ๊ฐ์ฒด๋ฅผ rejectํ๋ค
+ fetch() ํจ์๋ ๋ํดํธ๋ก GET ๋ฐฉ์์ผ๋ก ์๋ํ๊ณ GET ๋ฐฉ์์ ์์ฒญ ์ ๋ฌธ์ ๋ฐ์ง ์๊ธฐ ๋๋ฌธ์ ์ต์
์ธ์๊ฐ ํ์ ์๋ค
+ ๋๋ถ๋ถ REST API๋ JSON ํํ์ ๋ฐ์ดํฐ๋ฅผ ์๋ตํ๊ธฐ ๋๋ฌธ์ ์๋ต ๊ฐ์ฒด๋ json() ๋ฉ์๋๋ฅผ ์ ๊ณต
let url =
"https://koreanjson.com/posts/1";
fetch(url)
.then((response) => response.json())
.then((json) => console.log(json))
.catch((error) => console.log(error));
let url = // ์ฃผ์๋ฅผ ๋ด์ url ๋ณ์
"https://koreanjson.com/posts/1";
fetch(url) // url์ fetch๋ฅผ ํตํด์ ๊ฐ์ง๊ณ ์ด or ๋งค๊ฐ๋ณ์๋ก ๊ทธ๋ฅ ์ฃผ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฃ์ ์ ์์
.then((response) => response.json()) // ๊ฐ์ง๊ณ ์ค๋ฉด json์ ์์ฒญ
.then((json) => console.log(json))
.catch((error) => console.log(error)); // ์๋ฌ์ฒ๋ฆฌ
์ถ์ฒ codestates, https://www.daleseo.com/js-window-fetch/
'๐ป Development > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Promise, async, await (0) | 2023.01.24 |
---|---|
[JavaScript] ์ฌ๊ท ํจ์ (0) | 2022.12.15 |
[JavaScript] part-1/script.js (0) | 2022.11.25 |
[JavaScript] Node.js (0) | 2022.11.25 |
[JavaScript] ๋น๋๊ธฐ (0) | 2022.11.25 |