๐Axios๋?
HTTP Client(HTTP ์์์ ์ปค๋ฎค๋์ผ์ด์ ํ๋ ์๋ฐ๊ธฐ๋ฐ ์ปดํฌ๋ํธ) ๋ฅผ ๋ด์ฅํ๊ณ ์๋ Angular์ ๋ค๋ฅด๊ฒ, ๋ฆฌ์กํธ์๋ ๋ฐ๋ก ๋ด์ฅํ๋ ๋ด์ฅํด๋์ค๊ฐ ์กด์ฌํ์ง ์๋๋ค.
๋ฐ๋ผ์ ๋ฆฌ์กํธ์์ AJAX(๋น๋๊ธฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ) ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ Javascript ๋ด์ฅ ๊ฐ์ฒด์ธ XMLRequest๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ๋ค๋ฅธ HTTP Client๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ค HTTP Client ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๊ฒ ์ข์๊น์? ํ์ฌ ๋ฆฌ์กํธ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ HTTP Client๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Fetch API์ Axios๊ฐ ์๋ค
๐React์์ Axios ๊ตฌํํ๊ธฐ
1. Axios ์ค์น
npm install axios
yarn add axios
// ์์ฑํ ํ๋ก์ ํธ ์๋จ์ import๋ก ์ถ๊ฐ
import axios from "axios"
2. Axios ์ฌ์ฉํ๊ธฐ
ํ๋ก ํธ์์๋ ์๋์ ๋ ๊ฐ์ง ์ฒ๋ฆฌ๋ฅผ ํด ์ฃผ๋ฉด ๋๋ค.
1) ๋น๋๊ธฐ๋ก ์๋ฒ์ ์์ฒญ -> 2) ์๋ฒ์ ์๋ต์ด ์ค๋ฉด ๋ฐ์์ ์ฑ๊ณต/์คํจ ์๋ฅผ ๊ตฌ๋ถํด์ ์ฒ๋ฆฌ
์๋ฒ์ ์์ฒญ ํ ์๋ต์ด ์ค๊ธฐ๊น์ง ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์์ฒญ์ ๋น๋๊ธฐ ์ฒ๋ฆฌํ๊ณ ,
์๋ต์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ then์ด๋ await์ ์ฌ์ฉํ๋ค.
get์์ฒญ
๋ด๊ฐ ์ฌ์ฉํ๋ axios get์์ฒญ ์์ ์ด๋ค.
getMovies = async () => {
const{
data: {
data: { movies },
},
} = await axios.get(
"https://yts-proxy.now.sh/list_movies.json?sort_by=rating"
);
// axios๊ฐ ์คํ๋๊ธฐ ๊น์ง ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ await ์ด ํ์ํ๋ค.
this.setState({ movies, isLoading: false });
};
Axios ๊ณต์ ํ์ด์ง ์์
async function getUser() { // async, await์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
try {
// GET ์์ฒญ์ params์ ์ค์ด ๋ณด๋
const response = await axios.get('/user', {
params: {
ID: 12345
}
});
// ์๋ต ๊ฒฐ๊ณผ(response)๋ฅผ ๋ณ์์ ์ ์ฅํ๊ฑฐ๋.. ๋ฑ ํ์ํ ์ฒ๋ฆฌ๋ฅผ ํด ์ฃผ๋ฉด ๋๋ค.
await axios.get('/user?ID=12345'); // ์์ ์์ฒญ๊ณผ ๋์ผ
var userId = 12345;
await axios.get(`/user?ID=${userId}`); // Backtick(`)์ ์ด์ฉํด ์ด๋ ๊ฒ ์์ฒญํ ์๋ ์๋ค.
console.log(response);
} catch (e) {
// ์คํจ ์ ์ฒ๋ฆฌ
console.error(e);
}
}
์๋ต์ json ํ์์ผ๋ก ๋ฐ๋๋ค.
[
{ id: 1, pw: '1234', name: 'JUST' },
{ id: 2, pw: '1234', name: 'DO' },
{ id: 3, pw: '1234', name: 'IT' }
]
GET์ ์๋ฒ์์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋ณด์ฌ์ค๋ค๊ฑฐ๋ ํ๋ ์ฉ๋์ด๋ค. ์ฃผ์์ ์๋ ์ฟผ๋ฆฌ์คํธ๋ง์ ํ์ฉํด์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด์ง GET๋ฉ์๋๋ ๊ฐ์ด๋ ์ํ๋ฑ์ ๋ฐ๊ฟ ์ ์๋ค.
post ์์ฒญ
async function postUser() {
try {
// POST ์์ฒญ์ body์ ์ค์ด ๋ณด๋
await axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
});
} catch (e) {
console.error(e);
}
}
Post๋ ์๋ก์ด ๋ฆฌ์์ค๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ๋๋๋ฐ ๊ทธ๋ฌ๋ฉด ์ธ์ POST๋ฅผ ์ฌ์ฉํ ๊น?
-> ๋ก๊ทธ์ธ, ํ์๊ฐ์ ๋ฑ ์ฌ์ฉ์๊ฐ ์์ฑํ ํ์ผ์ ์๋ฒ์๋ค๊ฐ ์ ๋ก๋ํ ๋ ์ฌ์ฉํ๋ค.
์ด์ธ์๋ put๊ณผ delete๊ฐ ์์ง๋ง ์๋ตํ๊ฒ ๋ค!
๐Axiosํน์ง
- ์ด์ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ธ๋ผ์ฐ์ ์ XMLHttpRequest ๊ฐ์ฒด ๋๋ Node.js์ HTTP API ์ฌ์ฉ
- Promise(ES6) API ์ฌ์ฉ
- ์์ฒญ๊ณผ ์๋ต ๋ฐ์ดํฐ์ ๋ณํ
- HTTP ์์ฒญ ์ทจ์ ๋ฐ ์์ฒญ๊ณผ ์๋ต์ JSON ํํ๋ก ์๋ ๋ณ๊ฒฝ
์ฐธ๊ณ ์๋ฃ
'Frontend > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
react Lifecycle , useEffect ์์ addEventListener (0) | 2023.11.17 |
---|---|
react - router ๊ฐ๋ ์ ์ก์ ๋ณด์! (2) | 2023.10.13 |
7์ผ์ฐจ - react update (0) | 2023.02.13 |
6์ผ์ฐจ - react create (0) | 2023.02.12 |
5์ผ์ฐจ - react state (0) | 2023.02.08 |