2022. 3. 18. 19:39ใFront-End ์์ ์ค/Vue.js
๐ Axios๋?
JavaScript Application์์ Server ์ฆ, Back End์์ ํต์ ์ ํ๊ธฐ ์ํ HTTP Library๊ฐ ๋ฐ๋ก Axios๋ผ๋ ์น๊ตฌ์์. ์ด ์น๊ตฌ๋ Vue.js์ ์ข ์๋ ๊ฒ์ด ์๋๋ผ ๋ค๋ฅธ JavaScript Application ์ฆ, React.js ๋ฑ์๋ ์ด์ฉํ ์ ์๋ ๊ฒ์ด์์.
Web์ด๋, App์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ์ฐ๋ฆฌ๋ Data๋ฅผ ์ ์ฅํ๊ณ , ๋ถ๋ฌ์ค๊ธฐ ์ํด Back End Server๋ฅผ ๊ตฌ์ถํ๊ณ ์ด์ฉํด์ผ ํ๋ ๊ฒ์ด์์. Axios๋ Promise ๊ธฐ๋ฐ์ JavaScript ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ด์ฉํ๋ ๊ฒ์ด์์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Request๋ฅผ ๋ณด๋ธ ๋ค .then()์ ์ด์ฉํด์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์ ์ฒ๋ฆฌํ๋ ํ์์ผ๋ก ๊ตฌ์ฑ์ด ๋์ด ์๋ต๋๋ค.
axios.get('/api/data').then(res => { console.log(res.data) })
์ ์ฝ๋๋ฅผ ๋ถ์ํด ๋ณด๋ฉด /api/data ๋ผ๋ BackEnd์์ ๊ตฌ์ฑ๋ URI๋ฅผ ํตํด Data์ ๋ํ Request๋ฅผ ๋ณด๋ด Data๋ฅผ ๋ฌ๋ผ๊ณ ํ๋ ๊ฒ์ด์์. ๋ถ๋ฌ์จ Data๋ `.then()`์ res๋ผ๋ ๊ณณ์ ๋ด์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋๋๋ค.
๊ทธ๋ฐ ๋ค ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ฐ์ ๋ชจ๋์์ Console ํ๋ฉด์ ๊ฒฐ๊ณผ๊ฐ์ ๋ณด์ฌ์ฃผ๋๋ก ๋ง๋ค์ด ์ค Code์ธ ๊ฒ์ด์์.
GitHub - axios/axios: Promise based HTTP client for the browser and node.js
Promise based HTTP client for the browser and node.js - GitHub - axios/axios: Promise based HTTP client for the browser and node.js
github.com
๐ Axios ์ค์น
Axois๋ฅผ ์ค์นํ๊ธฐ ์ ์ ๋จผ์ Node.js๋ฅผ ์ค์นํด์ผ ํ๋ ๊ฒ์ด์์. ๊ทธ๋ฐ ๋ค npm์ด๋, yarn์ ์ด์ฉํด์ Axios๋ฅผ ์ค์นํ ์ ์๋ต๋๋ค.
Axois๋ ์๋ 3๊ฐ์ง ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ด์ฉํด์ ์ค์นํ ์ ์๋ ๊ฒ์ด์์.
โ npm์ผ๋ก ์ค์น๋ฅผ ํ๊ณ ์ ํ ๊ฒฝ์ฐ
# npm install --save axios
โ yarn์ ์ด์ฉํด ์ค์น๋ฅผ ํ๊ณ ์ ํ ๊ฒฝ์ฐ
# yarn add axios
โ ์ค์น๋ฅผ ํ์ง ์๊ณ , CDN ๋ฐฉ์์ผ๋ก ์ด์ฉํ๊ณ ์ ํ ๊ฒฝ์ฐ
์ง์ Web Page Source Code์ <HEAD></HEAD> ์์ญ์ ์
๋ ฅ
> <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
๐ Axios ์ด์ฉํ๊ธฐ
Axios๋ RESTFul์ ๋ณ์นญ์ผ๋ก ์ด์ฉํด ์ฝ๊ฒ ํต์ ํ ์ ์๋๋ก ํด ์ฃผ๋ ๊ฒ์ด์์.
โ Data ๊ฐ์ ธ์ค๊ธฐ(๋ถ๋ฌ์ค๊ธฐ) : axios.get(url[, config])
โ Data ์
๋ ฅํ๊ธฐ : axios.post(url[, data[, config]])
โ Data ์์ ํ๊ธฐ : axios.put || patch (url[, data, config]])
โ Data ์ญ์ ํ๊ธฐ : axios.delete(url[, config])
๐ฝ Data ๊ฐ์ ธ์ค๊ธฐ(๋ถ๋ฌ์ค๊ธฐ) - Get
GET์ Server๋ก ๋ถํฐ Data๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์ด์ฉํ๋ ๊ฒ์ด์์. Back End์์ ์ ์ํ URI Path๋ฅผ ํตํด ๊ฐ์ ๋ถ๋ฌ์ฌ ๋ ์ด์ฉํ๋ ๊ฒ์ด๋๋๋ค.
Axios ์์ฒญ(Request)๋ฅผ ํ ๋, ๋งค๊ฐ ๋ณ์(Parameter) ์ ๋ณด `(/api/todos/1)`๋ฅผ ๊ฐ์ด ์ ๋ ฅํ์ฌ ์ ๋ณด๋ฅผ ์ป์ด ์ฌ ์๋ ์๋๋ฐ, ์์ ๊ฐ์ ๋ฐฉ์์ ๋ชฉ๋ก ์กฐํ ์์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๊ณ , ์ด ๋ฐฉ๋ฒ์ ์์ธ ์กฐํ ์์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ธ ๊ฒ์ด์์.
๋ํ, Axios ์์ฒญ ์์ ๋งค๊ฐ ๋ณ์ ์ ๋ณด๊ฐ ์๋๋ผ Method์ ๋๋ฒ์งธ ์ธ์์ธ config ๊ฐ์ฒด๋ก ์์ฒญ์ ํ ์๋ ์๋ ๊ฒ์ด์์.
๐ฝ Data ์ ๋ ฅํ๊ธฐ - Post
`/api/data` URI๋ฅผ ์ด์ฉํด์ ๊ฐ์ ์ ๋ ฅํ ๋ ์ด์ฉํ๋ ๊ฒ์ด์์. ๊ฐ์ ์ ๋ ฅํ๋ค๋ ๊ฒ์ ์ด๋ค ์ ๋ณด๋ฅผ DB์ ์ ์ฅํ๊ฒ ๋ค๋ ์๋ฏธ์ธ ๊ฒ์ด์์.
Server์ Data List์ ๋ง์ง๋ง์ ์์ฑํ ๋ด์ฉ์ ์ถ๊ฐ ํด ์ฃผ๋ ๊ฒ์ด๋๋๋ค.
๐ฝ Data ์์ ํ๊ธฐ - Patch / Put
RESTFul ํ๊ฒ Web Service ๊ตฌ์ฑ ์ ์์ ์ ๋ํ HTTP Method๋ Patch์ Put์ด ์๋ ๊ฒ์ด์์. ์ด ๋์ ์ฐจ์ด์ ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ๋ฉด Put์ ์ ์ฒด Data๋ฅผ ์์ ํ ๋ ์ฆ, ์ ๋ชฉ, ๋ด์ฉ, ์ฒจ๋ถํ์ผ ๋ฑ์ด ์๋ค๊ณ ๊ฐ์ ์ ํ์ ๋, ์ด ๋ชจ๋ ๊ฒ์ด ์์ ์ด ์ผ์ด๋๋ค๋ฉด ์ฌ์ฉํ๋ Method์ธ ๊ฒ์ด๊ณ , Patch๋ ์ ๋ชฉ, ๋ด์ฉ, ์ฒจ๋ถํ์ผ ์ค ํ๋ ํน์ N๊ฐ๋ง ์์ ํ ๋ ์ด์ฉํ๋ Method์ธ ๊ฒ์ด์์.
์ฌ๊ธฐ์๋ Patch๋ฅผ ํตํด ์ ๋ชฉ๋ง ์์ ํ๋ ๊ฒ์ ํ์ธ ํด ๋ณผ ๊ฒ์ด์์.
๐ฝ Data ์ญ์ ํ๊ธฐ - Delete
`/api/data/3` ์ฆ, `/api/data`๋ผ๊ณ ์ ์๋ API URI์ ID ๊ฐ์ด 3์ด๋ผ๋ ์๋ฏธ์ธ๋ฐ, ์ด๊ฒ์ ์ญ์ ํ ๋ ์๋์ ๊ฐ์ด ํด ์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์.
'Front-End ์์ ์ค > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] Template refs (0) | 2022.03.19 |
---|---|
[Vue.js] Props (0) | 2022.03.19 |
[Vue.js] vue-router.esm-bundler.js?ec2d:72 [Vue Router warn]: No match found for location with path "/support/devInquryList" (0) | 2022.03.15 |
[Vue.js] ๊ธฐ์ด ๊ฐ๋ ์ ๋ฆฌ - Watch, Array, for๋ฌธ(๋ฐ๋ณต๋ฌธ), if๋ฌธ (0) | 2022.03.08 |
[Vue.js] ๊ธฐ์ด ๊ฐ๋ ์ ๋ฆฌ - data(), Data ์ฒ๋ฆฌ (0) | 2022.03.08 |