fetch() ์ฌ์ฉ๋ฒ
- ์ฒซ ๋ฒ์งธ ์ธ์๋ก URL, ๋๋ฒ์งธ ์ธ์๋ก ์ต์
๊ฐ์ฒด๋ฅผ ๋ฐ๊ณ Promise ํ์
์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
- ๋ฐํ๋ ๊ฐ์ฒด๋ API ํธ์ถ์ด ์ฑ๊ณตํ์ ๊ฒฝ์ฐ ์๋ต ๊ฐ์ฒด๋ฅผ resolveํ๊ณ ์คํจํ์ ๊ฒฝ์ฐ ์์ธ ๊ฐ์ฒด๋ฅผ reject ํ๋ค.
- ์ต์
๊ฐ์ฒด์๋ HTTP ๋ฐฉ์(method), HTTP ์์ฒญ ํค๋(headers), HTTP ์์ฒญ ์ ๋ฌธ(body) ๋ฑ์ ์ค์ ํด์ค๋ค.
- ์๋ต ๊ฐ์ฒด๋ก๋ถํฐ๋ HTTP ์๋ต ์ํ(status), HTTP ์๋ต ํค๋(headers), HTTP ์๋ต ์ ๋ฌธ(body) ๋ฑ์ ์ฝ์ด์ฌ ์ ์๋ค.
fetch(url, options)
.then((response) => console.log("response:", response))
.catch((error) => console.log("error:", error));
fetch()๋ก HTTP ์์ฒญํ๊ธฐ
-
GET: ์กด์ฌํ๋ ์์ ์์ฒญ
- ๋จ์ํ ์๊ฒฉ API์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉํ๋ค.
- ๋ํดํธ๋ก GET ๋ฐฉ์์ผ๋ก ์๋ํ๋ฉฐ ์ต์
์ธ์๊ฐ ํ์ ์๋ค.
- ์๋ต ๊ฐ์ฒด๋ json()์ ์ ๊ณตํ๊ณ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์๋ต ๊ฐ์ฒด๋ก๋ถํฐ JSON ํํ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ์ป์ ์ ์๋ค.
fetch(url)
.then((response) => response.json())
.then((data) => console.log(data))
-
POST: ์๋ก์ด ์์ ์์ฑ ์์ฒญ
- ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด ๋ณด๋ผ ๋๋ POSt ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
- ์๋ก์ด ํฌ์คํธ ์์ฑ์ ์ํด์ method๋ฅผ POST๋ก ์ง์ ํ๋ค.
- headers ์ต์
์ผ๋ก JSON ํฌ๋งท์ ์ฌ์ฉํ๋ค๊ณ ์๋ ค์ฃผ๊ณ body ์ต์
์๋ ์์ฒญ ์ ๋ฌธ์ JSON ํฌ๋งท์ผ๋ก ๋ฃ๋๋ค.
fetch(url, {
method: "POST",
headers: {
"Content-type": "application/json",
},
body: JSON.stringify({
title: "Test",
body: "Testing",
userId: 1
}),
})
.then((response) => response.json())
.then((data) => console.log(data))
-
PUT: ์กด์ฌํ๋ ์์ ๋ณ๊ฒฝ ์์ฒญ
- API์์ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ์ ์์ ์ ์ํด ์ฌ์ฉํ๋ค.
- method ์ต์
์ด PUT์ธ ๊ฒ์ ์ ์ธํ๋ฉด POST ๋ฐฉ์๊ณผ ๋น์ทํ๋ค.
fetch(url, {
method: "PUT",
headers: {
"Content-type": "application/json",
},
body: JSON.stringify({
title: "Test",
body: "Test end",
userId: 1
}),
})
.then((response) => response.json())
.then((data) => console.log(data))
-
DELETE: ์กด์ฌํ๋ ์์ ์ญ์ ์์ฒญ
- ๋ณด๋ผ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ headers, body ์ต์
์ด ํ์ ์๋ค.
fetch(url, {
method: "DELETE",
})
.then((response) => response.json())
.then((data) => console.log(data))