[Vue.js] axios ์„ค์น˜

2022. 3. 18. 19:39ใ†Front-End ์ž‘์—…์‹ค/Vue.js

728x90
๋ฐ˜์‘ํ˜•

 

๐Ÿš€ 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.com/axios/axios

 

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์ด๋ผ๋Š” ์˜๋ฏธ์ธ๋ฐ, ์ด๊ฒƒ์„ ์‚ญ์ œํ•  ๋• ์•„๋ž˜์™€ ๊ฐ™์ด ํ•ด ์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•