Jieunny์ ๋ธ๋ก๊ทธ
S2) Unit 3. [JS] fetch & Axios ๋ณธ๋ฌธ
๐ฃ 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));
//{id: 1, title: '์ ๋น์ ๋ชฉ์ ์ด๋ ํ๋์ด ๋ฏผ์ฃผ์ ๊ธฐ๋ณธ์ง์์ ์๋ฐฐ๋ ๋์๋ ์ ๋ถ๋ ํ๋ฒ์ฌํ์์ ๊ทธ ํด์ฐ์ ์ ์ํ ์ ์๊ณ ,
//์ ๋น์ ํ๋ฒ์ฌํ์์ ์ฌํ์ ์ํ์ฌ ํด์ฐ๋๋ค.', content: '๋ชจ๋ ๊ตญ๋ฏผ์ ์ธ๊ฐ์ผ๋ก์์ ์กด์๊ณผ ๊ฐ์น๋ฅผ ๊ฐ์ง๋ฉฐ,
//ํ๋ณต์ ์ถ๊ตฌํ ๊ถ๋ฆฌ๋ฅผ ๊ฐ์ง๋ค. ๋ชจ๋ ๊ตญ๋ฏผ์…์ง๋ค. ๋๊ตฌ๋ ์ง ์ฒดํฌ ๋๋ ๊ตฌ์์ ๋นํ ๋์๋ ์ฆ์ ๋ณํธ์ธ์ ์กฐ๋ ฅ์ ๋ฐ์ ๊ถ๋ฆฌ๋ฅผ ๊ฐ์ง๋ค.',
//createdAt: '2019-02-24T16:17:47.000Z', updatedAt: '2019-02-24T16:17:47.000Z', …}
โฐ ๊ฐ๋ฐ์ ๋๊ตฌ์ ์ฝ์์์ fetch API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
โฐ ์ ์ฒ๋ผ ์ฃผ์ด์ง url์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ๋ค.
๐ฃ Axios
โ๏ธ ๋ธ๋ผ์ฐ์ , Node.js๋ฅผ ์ํ Promise API๋ฅผ ํ์ฉํ๋ HTTP ๋น๋๊ธฐ ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
Axios | Fetch API |
์จ๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ค์น๊ฐ ํ์ํ๋ค. | ๋นํธ์ธ API๋ผ ๋ณ๋์ ์ค์น ํ์์๋ค. |
์๋์ผ๋ก JSON๋ฐ์ดํฐ ํ์์ผ๋ก ๋ณํ๋๋ค. | .json() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. |
โ๏ธ Axios ์ฌ์ฉ๋ฒ
1๏ธโฃ ์ค์น
npm install axios
2๏ธโฃ GET ์์ฒญ
โ๏ธ ์ผ๋ฐ์ ์ผ๋ก ์ ๋ณด๋ฅผ ์์ฒญํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์๋
โ๏ธ ์ฒซ ๋ฒ์งธ ์ธ์์๋ url์ฃผ์๊ฐ ํ์์ ์ผ๋ก ๋ค์ด๊ฐ๊ณ , ๋ ๋ฒ์งธ ์ธ์์๋ ์์ฒญ ์ ์ฌ์ฉํ ์ ์๋ ์ต์ ๋ค์ ์ ํ์ ์ผ๋ก ๋ฃ์ด์ค ์ ์๋ค.
axios.get("url"[,config])
3๏ธโฃ POST ์์ฒญ
โ๏ธ ์๋ฒ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์๋
โ๏ธ ์ฒซ ๋ฒ์งธ ์ธ์์๋ url์ฃผ์๊ฐ ํ์์ ์ผ๋ก ๋ค์ด๊ฐ๊ณ , ๋ ๋ฒ์งธ ์ธ์์๋ ์์ฒญ ์ ๋ณด๋ผ ๋ฐ์ดํฐ๋ฅผ ์ํฉ์ ๋ฐ๋ผ ์ค์ ํด์ค๋ค.
axios.post("url"[, data[, config]])
๐ฃ Fetch์ Axios์ ์ฌ์ฉ ์์
1๏ธโฃ GET ์์ฒญ
// fetch
// Promise ver
fetch('https://koreanjson.com/users/1', { method: 'GET' })
.then((response) => response.json())
.then((json) => console.log(json))
.catch((error) => console.log(error));
// Async / Await ver
async function request() {
const response = await fetch('https://koreanjson.com/users/1', {
method: 'GET',
});
const data = await response.json();
console.log(data);
}
request();
// axios
// axios๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ค์นํ axios๋ฅผ ๋ถ๋ฌ์์ผ ํฉ๋๋ค.
import axios from 'axios';
// Promise ver
axios
.get('https://koreanjson.com/users/1')
.then((response) => {
const { data } = response;
console.log(data);
})
.catch((error) => console.log(error));
// Async / Await ver
async function request() {
const response = await axios.get('https://koreanjson.com/users/1');
const { data } = response;
console.log(data);
}
request();
2๏ธโฃ POST ์์ฒญ
// fetch
// Promise ver
fetch('https://koreanjson.com/users', {
method: 'POST',
headers: {
// JSON์ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค๋ค๊ณ ์๋ฒ์๊ฒ ์๋ ค์ฃผ๋ ์ญํ ์
๋๋ค.
'Content-Type': 'application/json',
},
body: JSON.stringify({ nickName: 'ApeachIcetea', age: 20 }),
})
.then((response) => response.json())
.then((json) => console.log(json))
.catch((error) => console.log(error));
// Async / Await ver
async function request() {
const response = await fetch('https://koreanjson.com/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ nickName: 'ApeachIcetea', age: 20 }),
});
const data = await response.json();
console.log(data);
}
request();
// axios
// axios๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ค์นํ axios๋ฅผ ๋ถ๋ฌ์์ผ ํฉ๋๋ค.
import axios from 'axios';
// Promise ver
axios
.post('https://koreanjson.com/users', { nickName: 'ApeachIcetea', age: '20' })
.then((response) => {
const { data } = response;
console.log(data);
})
.catch((error) => console.log(error));
// Async / Await ver
async function request() {
const response = await axios.post('https://koreanjson.com/users', {
name: 'ApeachIcetea',
age: '20',
});
const { data } = response;
console.log(data);
}
request();
'CodeStates > learning contents' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
S2) Unit 5. [React] React SPA (0) | 2023.01.25 |
---|---|
S2) Unit 4. [React] ๊ธฐ์ด (0) | 2023.01.20 |
S2) Unit 3. [JS] Node.js (0) | 2023.01.18 |
S2) Unit 3. [JS] ๋น๋๊ธฐ(Callback, Promise, Async/Await) (0) | 2023.01.17 |
S2) Unit 2. [JS] ํ๋กํ ํ์ (0) | 2023.01.13 |