Fetch API vs Axios

hyena_leeยท2023๋…„ 1์›” 19์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
24/42
post-thumbnail

๐Ÿ—“๏ธ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ

1.fetch API ๋ฅผ ์ด์šฉํ•œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ
2. AXios

๐ŸŒ–fetch API

fetch๋Š” ES6๋ถ€ํ„ฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค.

promise๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค๋Š” ๊ฒƒ
๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ๋ชจ๋“ˆ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ
AJAX์˜ ํ•œ ๋ฐฉ์‹์œผ๋กœ URL ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” API
: ์›นํŽ˜์ด์ง€์— ๋‚ ์”จ, ๋ฏธ์„ธ๋จผ์ง€ ๋†๋„ ๊ฐ™์€ ์ •๋ณด๋Š” ์ „์ฒด ํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ์˜์—ญ๋งŒ ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์•ผ ํ•˜๋ฉฐ ์ด๋•Œ, ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•จ. ์›๊ฒฉ URL์„ ๋งค๊ฐœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ

  • web API
  • Promise ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ
    -> chaining, async & await ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Response ๊ฐ์ฒด (= Promise)
    : fetch(url) ์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด
    -> Response ๊ฐ์ฒด์˜ ์†์„ฑ json์„ ์‹คํ–‰ํ•˜๋ฉด JSON์œผ๋กœ ๋ฐ˜ํ™˜
    ex. Response.ok : ์‘๋‹ต์˜ ์„ฑ๊ณต ์—ฌ๋ถ€,
    Respnse.status : ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ -> ์ƒํƒœ ๋ณ„๋กœ ๋‹ค๋ฅธ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
  • GET ๋ฐฉ์‹์˜ ์š”์ฒญ / POST ๋ฐฉ์‹์˜ ์š”์ฒญ ๋‘˜๋‹ค ๊ฐ€๋Šฅ

API (Application Programming Interface)
->์š”์ฒญ, ์ˆ˜์‹ ํ•˜๋Š” ์ •ํ•ด์ง„ ๊ทœ์น™

AJAX (Asynchronous Javascript And Xml)
->๋น„๋™๊ธฐ์ ์œผ๋กœ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ 

๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์ด ๋–จ์–ด์ง€๊ณ  response timeout ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๋“ฑ ๊ธฐ๋Šฅ์ ์ธ ๋ถ€๋ถ„์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿผ์—๋„ ๋‚ด์žฅ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ๋งŒํผ ์•ˆ์ •์ ์ด์ง€ ์•Š์€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„  ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ

๐Ÿ“ fetch์˜ ์„ฑ๊ณต ์—ฌ๋ถ€ ํ™•์ธ

fetch() (en-US) ํ”„๋กœ๋ฏธ์Šค๋Š” ๋„คํŠธ์›Œํฌ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ๊ฑฐ๋‚˜, ์„œ๋ฒ„์˜ CORS ์„ค์ •์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ TypeError๋กœ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋‘ ๊ฒฝ์šฐ๋Š” ๊ถŒํ•œ ๋“ฑ ์„ค์ •์˜ ๋ฌธ์ œ๊ณ , 404์™€ ๊ฐ™์€ ์‘๋‹ต์€ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๊ฑฐ๋ถ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. fetch()๊ฐ€ ์„ฑ๊ณตํ–ˆ๋Š”์ง€๋ฅผ ์ •ํ™•ํžˆ ์•Œ์•„๋‚ด๋ ค๋ฉด ํ”„๋กœ๋ฏธ์Šค์˜ ์ดํ–‰ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ ํ›„, Response.ok (en-US) ์†์„ฑ์˜ ๊ฐ’์ด true์ธ์ง€๋„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ Axios

axios๋Š” node.js์™€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•œ http ํ†ต์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.
fetch์ฒ˜๋Ÿผ promise๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” ๊ณตํ†ต์ ์ด ์žˆ์ง€๋งŒ, fetch์™€๋Š” ๋‹ฌ๋ฆฌ ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์ด ์ข‹๊ณ  ํŽธ๋ฆฌํ•˜๋ฉฐ ๊ธฐ๋Šฅ์ด ๋งŽ์Šต๋‹ˆ๋‹ค!
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์ง€๋งŒ fetch์— ๋น„ํ•ด ๊ธฐ๋Šฅ์ƒ์œผ๋กœ ๋” ๋””ํ…Œ์ผํ•˜๋‹ค๋Š” ํฐ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

React์—์„œ httpํ†ต์‹ ์„ ํ•  ๋•Œ์—” ์ฃผ๋กœ axios๋ฅผ ์‚ฌ์šฉ!
promise๊ธฐ๋ฐ˜์— ํ˜ธํ™˜์„ฑ์ด ์ข‹๊ณ , ๋””ํ…Œ์ผํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค:)

๐Ÿ“Axios ์‚ฌ์šฉํ•˜๊ธฐ

: axios ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„ค์น˜๊ฐ€ ํ•„์š”!!
1.npm install axios
2.yarn add axios

  1. ์„œ๋ฒ„์— request ๋ณด๋‚ด๊ณ 
  2. ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ response ์˜ค๋ฉด ์‘๋‹ต์ด ์™”์„ ๋•Œ์™€ ์˜ค์ง€ ์•Š์•˜์„ ๋•Œ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉ!

์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ์‘๋‹ต์ด ์˜ค๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์„œ๋ฒ„์— ๋ณด๋‚ด๋Š” ์š”์ฒญ์€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉฐ, ๊ทธ ์ดํ›„์— ์‘๋‹ต์„ ๋ฐ”ํƒ•์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์€ .then ์ด๋‚˜ await๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

์šฐ์„  ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š”, axios์˜ request ๋ฉ”์†Œ๋“œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„ค๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค!

  1. GET : ์„œ๋ฒ„์—์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ณด์—ฌ์คŒ
  2. POST : ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ƒ„
  3. PUT : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด๋ถ€ ๋‚ด์šฉ ๊ฐฑ์‹ 
  4. DELETE : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด๋ถ€ ๋‚ด์šฉ ์‚ญ์ œ

์ด ๋„ค ๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด๋‚ด์•ผํ•˜๋Š” ์ •๋ณด๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์–ด๋–ค ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€
  2. url ์ฃผ์†Œ
  3. data (์„ ํƒ์ )
  4. params(์„ ํƒ์ )

profile
์‹ค์ˆ˜๋ฅผ ๋‘๋ ค์›Œ ๋ง๊ณ  ๊ณ„์† ๋„์ „ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ์—ฌ์ •!

0๊ฐœ์˜ ๋Œ“๊ธ€