Input + Output = True

๋™๊ธฐ ๋น„๋™๊ธฐ / ์„œ๋ฒ„ ํ†ต์‹  (feat. react axios) ๋ณธ๋ฌธ

๐ŸŽจFrontEnd/React

๋™๊ธฐ ๋น„๋™๊ธฐ / ์„œ๋ฒ„ ํ†ต์‹  (feat. react axios)

IOTrue 2023. 1. 15. 17:26

๐Ÿ˜Ž ๋™๊ธฐ ๋น„๋™๊ธฐ / ์„œ๋ฒ„ ํ†ต์‹  (feat. react axios)

 

โœ… ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ

1. ๋™๊ธฐ (synchronous: ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š”)
์š”์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค๋Š” ์˜๋ฏธ.

์š”์ฒญ์„ ํ•˜๋ฉด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋”๋ผ๋„ ์š”์ฒญํ•œ ์ž๋ฆฌ์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

์žฅ์  : ์„ค๊ณ„๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ด๋‹ค.
๋‹จ์  : ์ด๋ฒˆ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ž‘์—… ์ง„ํ–‰์„ ๋ชปํ•˜๊ณ  ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค.

 

2. ๋น„๋™๊ธฐ (Asynchronous: ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”)
์š”์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ.

์š”์ฒญํ•œ ๊ทธ ์ž๋ฆฌ์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š์Œ.

๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์„œ๋ฒ„์™€์˜ ํ†ต์‹  ์ ˆ์ฐจ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

์žฅ์  : ์š”์ฒญ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋Š” ์‹œ๊ฐ„ ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‹จ์  : ๋™๊ธฐ์‹๋ณด๋‹ค ์„ค๊ณ„๊ฐ€ ๋‹ค์†Œ ๋ณต์žกํ•˜๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด

๋™๊ธฐ: A ์ž‘์—… ์š”์ฒญ > A ์ž‘์—… ๊ฒฐ๊ณผ ์ถœ๋ ฅ > B ์ž‘์—… ์š”์ฒญ > B ์ž‘์—… ๊ฒฐ๊ณผ ์ถœ๋ ฅ > C ์ž‘์—… ์š”์ฒญ > C ์ž‘์—… ๊ฒฐ๊ณผ ์ถœ๋ ฅ

๋น„๋™๊ธฐ: A ์ž‘์—… ์š”์ฒญ > B ์ž‘์—… ์š”์ฒญ > C ์ž‘์—… ์š”์ฒญ > A + B + C ์ž‘์—… ๊ฒฐ๊ณผ ์ถœ๋ ฅ

์ด๋ ‡๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋™๊ธฐ, ๋น„๋™๊ธฐ ์ฐธ๊ณ  ์ด๋ฏธ์ง€

 

โœ… axios๋ž€?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ API๋ฅผ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ(์„œ๋ฒ„์™€ ํ†ต์‹ ) ๋ณดํ†ต Fetch API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
๋ฆฌ์•กํŠธ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ built-in ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ค‘ ํ•˜๋‚˜์ธ Fetch API๋ผ๋Š” API ์—ฐ๋™ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ๋ฆฌ์•กํŠธ์—์„œ๋Š” axios ์‚ฌ์šฉ์„ ์„ ํ˜ธํ•œ๋‹ค.

 

axios ํŠน์ง•

-Fetch API ๋ณด๋‹ค ๊ฐ„์†Œํ™”๋œ ๋ฌธ๋ฒ•

-Axios๋Š” ์šด์˜ํ™˜๊ฒฝ์— ๋”ฐ๋ผ XMLHttpRequest ๊ฐ์ฒด ๋˜๋Š” Node.js์˜ HTTP API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
-promise API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค(.then ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
-HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ JSON ํ˜•ํƒœ๋กœ ์ž๋™ ๋ณ€๊ฒฝ
-CSRF ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค

 

fetch api post

fetch("https://localhost:3000/user/post", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    id: "userA",
    job: "developer",
  }),
}).then((response) => console.log(response));

axios post

axios({
  method: 'post',
  url: 'https://localhost:3000/user',
  data: {
    userName: 'user',
    job: 'developer'
  }
}).then((response) => console.log(response));

 

 

โœ… axios ์‚ฌ์šฉ๋ฒ•

axios ์„ค์น˜

yarn add axios

npm i axios

//ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ์ƒ๋‹จ import
import axios from 'axios'

 

axios ๋ฌธ๋ฒ•

// POST ์š”์ฒญ ์ „์†ก
axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'Hello',
    lastName: 'World'
  }
});

axios({
  method: 'get',
  url: 'http://server/api',
  responseType: 'stream'
})
  .then(function (response) {
    console.log(response)
  });
// GET ์š”์ฒญ ์ „์†ก (๊ธฐ๋ณธ๊ฐ’)
axios('/user/12345');

 

axios ๋ฉ”์†Œ๋“œ

axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.options(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])

 

 

 

 

์ฐธ๊ณ 

https://axios-http.com/kr/docs/intro

 

์‹œ์ž‘ํ•˜๊ธฐ | Axios Docs

์‹œ์ž‘ํ•˜๊ธฐ ๋ธŒ๋ผ์šฐ์ €์™€ node.js์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Promise ๊ธฐ๋ฐ˜ HTTP ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Axios๋ž€? Axios๋Š” node.js์™€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•œ Promise ๊ธฐ๋ฐ˜ HTTP ํด๋ผ์ด์–ธํŠธ ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋™ํ˜• ์ž…๋‹ˆ๋‹ค(๋™์ผํ•œ ์ฝ”

axios-http.com

 

 

 

Comments