JavaScript
[JavaScript] Fetch API
carsumin
2024. 8. 14. 15:14
https://developer.mozilla.org/ko/docs/Web/API/Fetch_API/Using_Fetch
Fetch API ์ฌ์ฉํ๊ธฐ - Web API | MDN
Fetch API๋ HTTP ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ๋ ์์ฒญ๊ณผ ์๋ต ๋ฑ์ ์์๋ฅผ JavaScript์์ ์ ๊ทผํ๊ณ ์กฐ์ํ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. Fetch API๊ฐ ์ ๊ณตํ๋ ์ ์ญ fetch() ๋ฉ์๋๋ก ๋คํธ์ํฌ์ ๋ฆฌ์์ค๋ฅผ
developer.mozilla.org
fetch API ๋?
- JavaScript์์ ๋คํธ์ํฌ ์์ฒญ์ ์ํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ API
- ์ง๊ด์ ์ด๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์
- ๋น๋๊ธฐ์ ์ผ๋ก HTTP ์์ฒญ์ ๋ณด๋
์ฃผ์ ํน์ง
1. Promise ๊ธฐ๋ฐ
- fetch๋ Promise๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ ๋ 'then', 'catch' ๋ฉ์๋ ์ฌ์ฉ, async/await ๊ตฌ๋ฌธ ์ฌ์ฉ
- ์ฝ๋ ๊ฐ๋ ์ฑ ์ฆ๊ฐ, ๋ณต์กํ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๋ ์ฝ๊ฒ ํ ์ ์์
2. ์ง๊ด์ ์ธ API
- ์ฒซ๋ฒ์งธ๋ก ์ธ์๋ก ์์ฒญํ URL ์ ๋ฌ, ๋๋ฒ์งธ ์ธ์๋ก ์์ฒญ์ ์ค์ ์ ๊ฐ์ฒด๋ก ์ ๋ฌ
3. ์๋ต ์ฒ๋ฆฌ
- fetch๊ฐ ๋ฐํํ๋ Promise๋ Response ๊ฐ์ฒด๋ฅผ ๋ฐํ
- Response ๊ฐ์ฒด์๋ ์๋ต ์ํ, ํค๋, ๊ทธ๋ฆฌ๊ณ ๋ณธ๋ฌธ์ ํฌํจํ ์ ๋ณด๊ฐ ๋ด๊ฒจ์์
- ์๋ต๋ณธ๋ฌธ์ json(), text(), blob() ๋ฑ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ํ๋ ํ์์ผ๋ก ๋ณํ ๊ฐ๋ฅ
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
// ๊ฐ๋จํ GET ์์ฒญ
fetch('https://api.example.com/data')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok ' + response.statusText);
}
return response.json(); // JSON ํ์์ผ๋ก ์๋ต ๋ณธ๋ฌธ์ ํ์ฑ
})
.then(data => {
console.log(data); // ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
})
.catch(error => {
console.error('There has been a problem with your fetch operation:', error);
});
POST ์์ฒญ
// POST ์์ฒญ ์์
fetch('https://api.example.com/data', {
method: 'POST', // ์์ฒญ ๋ฐฉ๋ฒ
headers: {
'Content-Type': 'application/json' // ์์ฒญ ํค๋ ์ค์
},
body: JSON.stringify({ // ์์ฒญ ๋ฐ๋
name: 'John Doe',
age: 30
})
})
.then(response => response.json()) // ์๋ต์ JSON์ผ๋ก ๋ณํ
.then(data => console.log(data)) // ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
.catch(error => console.error('Error:', error)); // ์๋ฌ ์ฒ๋ฆฌ
์ฃผ์ ๋ฉ์๋์ ํ๋กํผํฐ
- response.ok : ์๋ต์ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ Boolean ๊ฐ
- response.status : HTTP ์ํ ์ฝ๋ ๋ฐํ
- response.json() : ์๋ต ๋ณธ๋ฌธ์ JSON ํ์์ผ๋ก ํ์ฑ
- response.text() : ์๋ต ๋ณธ๋ฌธ์ ํ ์คํธ ํ์์ผ๋ก ๋ฐํ
- response.blob() : ์๋ต ๋ณธ๋ฌธ์ Blob ๊ฐ์ฒด๋ก ๋ฐํ
์ฅ์
- ์ง๊ด์ ์ด๊ณ ๊ฐ๋ ์ฑ์ด ์ข์
- ์ค์ ๊ณผ ์ฌ์ฉ์ด ๊ฐ๋จํจ
- ๋ค์ํ ์ต์ ์ ์ง์ํจ
๋จ์
- CORS ์ ํ