๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํด์ axios ๋ฅผ ์ฌ์ฉํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ?
- ํน์ ์ฝ๋์ ์ฐ์ฐ์ด ๋๋ ๋๊น์ง ์ฝ๋์ ์คํ์ ๋ฉ์ถ์ง ์๊ณ , ๋ค์ ์ฝ๋๋ฅผ ๋จผ์ ์คํํ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
๋ํ์ ์ธ ์๋ก, ๋ฌผ๊ฑด์ ์ฌ๋ฌ๊ฑด ๋ฐฐ์ก๋ณด๋ด๋ ๊ฒ์ ์๊ฐํ๋ฉด ์ฝ๋ค.
์์์ ์๊ด์์ด ์ฌ๋ฌ ๋ชฉ์ ์ง์ ๋ณด๋ด๋ ์์์ ๋ฐฐ์ก ํ๋ก์ธ์ค ๋ฐ๋ผ์ ๋ฌผํ ๋ฐฐ์ก์ด ๋ฉ์ถ์ง ์๊ณ ์งํ๋๋ค.
axios๋ ๋ฌด์์ธ๊ฐ?
- axios ๋ผ์ด๋ธ๋ฌ๋ฅด์์ ์ฌ์ฉํ๋ Promose ๊ฐ์ฒด์ ๋ํด์ ๋จผ์ ์ดํด๋ณด๋๋ก ํ์.
- ๋น๋๊ธฐ ์์ ์ด ํ๊ฒ ๋๋ฉด ๊ฒฐ๊ณผ๊ฐ ์ด์จ๋ ์ฑ๊ณต์ด๊ฑฐ๋ ์คํจ ์๋๋ฉด ๋๋ ์๋ ์งํ์ค์ธ ์ํ๊ฐ ์์ ๊ฒ์ด๋ค.
- ๊ทธ๋์ ๋ค์ 3๊ฐ์ง ๊ฒฐ๊ณผ์ ๋ํด์, ์ฑ๊ณต ํ์๋๋ ์ด๋ค ํ๋์ ํ๊ณ ,
- ์คํจ๋ฅผ ํ์๋์๋ ์ด๋ค ํ๋์ ํด์ผํ๋์ง๋ฅผ ์ ํด๋์๊ฒ ๋ฐ๋ก promise ๊ฐ์ฒด์ด๋ฉฐ
- ๋ค์ 3๊ฐ์ง๋ก ๊ตฌ๋ณ ๊ฐ๋ฅํ๋ฐ
- ๋๊ธฐ get/post ./ ์ฐ์ฐ ์์ฒญ์ ๋ณด๋ด๋๊ณ ์ดํํ๊ฑฐ๋ ๊ฑฐ๋ถ๋์ง ์์ ์ด๊ธฐ ๊ฒฝ์ฐ
- ์ดํ .then() / ์ฐ์ฐ์ด ์ฑ๊ณตํ ๊ฒฝ์ฐ
- ๊ฑฐ๋ถ .catch() / ์ฐ์ฐ์ด ์คํจํ ๊ฒฝ์ฐ
(์ฝ๋)
function fetchMovies(title) {
const OMDB_API_KEY = '7035c60c123'
return new Promise(async (resolve, reject) => {
try {
const res = await axios.get(`https://omdbapi.com?apikey=${OMDB_API_KEY}&s=${title}`)
// ์ดํ( fulfilled ) : ์ฐ์ฐ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋จ
resolve(res)
} catch (hello) {
// ์๋ฌ ๋ฐ์์
console.log(hello.message)
// rjqn(rejected) : ์ฐ์ฐ์ด ์คํจํจ
reject('test completed')
}
})
}
async function test() {
try {
const res = await fetchMovies('frozen')
console.log(res)
} catch (test) {
console.log(test)
}
}
test()
function hello() {
fetchMovies('jobs')
.then(res => console.log(res))
.catch(test => { console.log(test)})
}
hello()
- omdb๋ก ์์ํ๋ url์ get ์์ฒญ์ ๋ณด๋ด์ด
- axios ํจ์๋ฅผ ํตํด์ promise ๊ฐ์ฒด๋ฅผ ๋ฐ์ ๊ฒ์ res ๋ณ์์ ์ ์ฅํํ
- ์ฑ๊ณต์ ์ผ๋ก ์์ฒญ์ ๋ณด๋ผ์ resolve, ์ฑ๊ณตํ์๋ ๋ณด๋ด๋ resolve ๊ฐ์ฒด๋ฅผ ํตํด์ res ์ ๋ด๊ธด ๋ด์ฉ์ ๋ณด๋ด์ด
- resolve๋ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ ๊ฐ์ ๋ฐ๋ก ๋ฐํํ๋ค ???
- test() ๊ฐ ์คํ๋๋ฉด res๋ฅผ ์ฐ์ด๋ณด์๋ค
-then, catch ๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํ async, await์ ์ฌ์ฉํ ํ์๊ฐ ์๋ค๋ ๊ฑฐ ์ฃผ์
- json ํ์ ์ผ๋ก ์ถ๋ ฅ๋๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ
- config, data, headers, request, [[Prototype]] ์ด ๋ด๊ฒจ ์์๋ค
Axios
- cdn ํ์์ผ๋ก ๋ถ๋ฌ์ค๊ธฐ
- ์ต์ ๋ฒ์ 1.2.3
- https://cdnjs.com/libraries/axios
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.2.3/axios.min.js" integrity="sha512-L4lHq2JI/GoKsERT8KYa72iCwfSrKYWEyaBxzJeeITM9Lub5vlTj8tufqYk056exhjo2QDEipJrg6zen/DDtoQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
- axios ๋ผ๋ ๋ณ์๋ฅผ ์ด์ฉํ์ฌ, get ๋ฉ์๋ ์คํ ๊ฐ๋ฅ
axios.get
- ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋
axios.post
- ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์๋กญ๊ฒ ์์ฑํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋
- ๋ณด๋ผ ๋ฐ์ดํฐ๋ ๊ฐ์ฒด ์์ ๋ด์์ ๋ณด๋ธ๋ค.
axios.post(url, { movie: 'frozen'} )
axios.put
- ํน์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋ ์์ฒญํ๋ ๋ฉ์๋
- ์๋ก์ด ๋ฆฌ์์ค๋ฅผ ์์ฑ
- ์ด๋ฏธ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋์ฒด
- post ๋ ์๋กญ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฑํด ๋๊ฐ์, ๋ฐ์ดํฐ์ ์์ด ๋์ด๋์ง๋ง, put์ ๋ณ๊ฒฝํจ
axios.delete
- ํน์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋
'๐๏ธ์ํํธ์จ์ด > ๐JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[f/e] ์บก์ณ๋ง๊ณผ ๋ฒ๋ธ๋ง (0) | 2023.04.04 |
---|---|
[webpack-dev-server] ์ฝ๋ ๋ณ๊ฒฝ์ฌํญ ๋ฐ๋ก ๋ฐ์(js) (0) | 2023.01.11 |
[Node.js] express ์ cors ์ฌ์ฉํด์ API ๋ง๋ค๊ธฐ (0) | 2022.12.19 |
์๋ฐ์คํฌ๋ฆฝํธ์์ ํ์ดํ๋ฅผ ์ฌ์ฉํ๋ ์ด์ (0) | 2022.11.29 |
[์๋ฐ์คํฌ๋ฆฝํธ] Math ํจ์ ์ด์ฉํ์ฌ ๋ก๋ ๋ฒํธ ์์ฑํ๊ธฐ (0) | 2022.11.08 |