[๋ฆฌ์•กํŠธ] fetch์™€ axios ์ฐจ์ด

2025. 8. 11. 17:17ใ†React

Fetch๋ž€?

Fetch API๋Š” ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์œ„ํ•ด fetch()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ € ๋‚ด์žฅ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. 

 

  • ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ €์— ๊ธฐ๋ณธ ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ๋ณ„๋„์˜ ์„ค์น˜๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. 
  • ๋น„๋™๊ธฐ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก Promise๊ธฐ๋ฐ˜๋กœ  ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. 
  • HTTP์˜ 404 or 500 ์—๋Ÿฌ๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‘๋‹ต ๊ฐ์ฒด์˜ ok์†์„ฑ์„ ํ™•์ธํ•œ ํ›„ ์ˆ˜๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (. catch ์‚ฌ์šฉ)
  • ์‘๋‹ต ๋ณธ๋ฌธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ŠคํŠธ๋ฆผ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜๋™์œผ๋กœ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”๋ฅผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’ก Promise

๋”๋ณด๊ธฐ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

 

[๋„คํŠธ์›Œํฌ ์š”์ฒญ]

  • ์„ฑ๊ณต ์‹œ resolve promise ์‘๋‹ต 
  • ์‹คํŒจ ์‹œ reject promise  ์‘๋‹ต 

 โš ๏ธ HTTP ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ 404 or 500

       HTTP ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ 404๋‚˜ 500์ด์–ด๋„ ๋„คํŠธ์›Œํฌ ์š”์ฒญ ์ž์ฒด๋Š” ์„ฑ๊ณตํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‘๋‹ต ๊ฐ์ฒด์˜ ok ์†์„ฑ์„ ํ™•์ธํ•˜์—ฌ ์ง์ ‘ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ํ•˜๊ธฐ  

๋”๋ณด๊ธฐ

๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ์ „

์ง๋ ฌํ™” ์ „์—๋Š” fetch()๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ์‘๋‹ต ๊ฐ์ฒด ์ „์ฒด๊ฐ€ ์ถœ๋ ฅ๋˜์–ด, ํ—ค๋”, ์ƒํƒœ ์ฝ”๋“œ ๋“ฑ ๋ฉ”ํƒ€ ์ •๋ณด๋งŒ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

fetch(url, {
  method: "GET",  
  headers: {
    "Content-Type": "application/json",
    "Authorization": `Bearer ${token}`
  }
})
.then(res => console.log(res));

 

์‘๋‹ต ๊ฐ’

์ง๋ ฌํ™” ์ „ ๋ฐ์ดํ„ฐ

 

๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ํ›„

res.json() ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋กœ ์ง๋ ฌํ™”(ํŒŒ์‹ฑ) ํ•ด์•ผ ์‹ค์ œ JSON ๋ฐ์ดํ„ฐ๊ฐ€ Promise๋กœ ๋ฐ˜ํ™˜๋˜์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

fetch(url, {
    method: "GET",
    headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${token}`
    }
})
.then((res) => res.json()) //json ์ง๋ ฌํ™”
.then((data) => {
    console.log(data); //์‹ค์ œ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
 });

 

์‘๋‹ต ๊ฐ’

 

์ง๋ ฌํ™” ํ›„ ๋ฐ์ดํ„ฐ

 


Axios๋ž€?

Pormise ๊ธฐ๋ฐ˜ HTTP ํด๋ผ์ด์–ธํŠธ๋กœ ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. 

 

  • ๋ธŒ๋ผ์šฐ์ €์™€ Node.js ํ™˜๊ฒฝ์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณ„๋„์˜ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 
  • Fetch์™€ ๋™์ผํ•˜๊ฒŒ Promise ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. 
  • ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„์„œ ์ค‘๊ฐ„์— ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ—ค๋”๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
  • ์ž๋™์œผ๋กœ JSON ํŒŒ์‹ฑ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ HTTP ์—๋Ÿฌ ์ƒํƒœ๋„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด ์ค๋‹ˆ๋‹ค.
  • ์š”์ฒญ ์ทจ์†Œ, ์š”์ฒญ ํƒ€์ž„์•„์›ƒ ์„ค์ •์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. (์š”์ฒญ ์ทจ์†Œ๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ์š”์ฒญ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.)

 

 

๐Ÿ’ก Axios ์„ค์น˜

๋”๋ณด๊ธฐ

์„ค์น˜ ๋ช…๋ น์–ด

npm install axios

 

ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

import axios from "axios";

Fetch์™€  Axios ๋น„๊ต

๊ตฌ๋ถ„ Fetch Axios
์„ค์น˜ ์—ฌ๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค (์„ค์น˜ ํ•„์š” โŒ) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์„ค์น˜ ํ•„์š” โญ•)
์—๋Ÿฌ ๋ฐ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ์ฒ˜๋ฆฌ ์ˆ˜๋™์œผ๋กœ ์ž‘์„ฑ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ
์ง€์› ํ™˜๊ฒฝ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘
ํŠน์ง• ๋ฐ ๊ธฐ๋Šฅ ๊ฐ€๋ณ์ง€๋งŒ, ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ โŒ ์ธํ„ฐ์…‰ํ„ฐ, ์š”์ฒญ ์ทจ์†Œ ๋“ฑ ๊ธฐ๋Šฅ ํฌํ•จ

 

 

๋ฐฑ์—”๋“œ API ํ˜ธ์ถœํ•˜๊ธฐ 

์•„๋ž˜ ํฌ์ŠคํŒ…์—์„œ๋Š” Axios๋ฅผ ์„ ํƒํ•œ ์ด์œ ์™€ GET ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

(POST, DELETE ๋“ฑ์˜ ์š”์ฒญ์€ ์ถ”ํ›„ ๊ตฌํ˜„ ํ›„ ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.)

 

[๋ฆฌ์•กํŠธ] ๋ฐฑ์—”๋“œ API ํ˜ธ์ถœ (featGet ์š”์ฒญ ๋ณด๋‚ด๊ธฐ. Axios ์„ ํƒ ์ด์œ , )

ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๋Š” ํ’€์Šคํƒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ธฐ์ดˆ ํ•™์Šต์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.์ด์ „๊นŒ์ง€๋Š” UI ๊ตฌํ˜„์—๋งŒ ์ง‘์ค‘ํ–ˆ๊ณ  ์ด์ œ ๋ฐฑ์—”๋“œ์™€์˜ ์—ฐ๋™ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. HTTP ์š”์ฒญ ์ฒ˜

clvl1022.tistory.com

 


๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

 

 

[JavaScript] Fetch์™€ Axios์˜ ์ฐจ์ด์  ๋น„๊ต

 ํฌ๊ณ  ์ž‘์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด, ์šฐ๋ฆฌ๋Š” ๋ฐฑ์—”๋“œ ๋˜๋Š” ์„œ๋“œํŒŒํ‹ฐ API์— ๋„คํŠธ์›Œํฌ ์š”์ฒญ(HTTP Requests)์ด ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ Fetch ํ˜น์€ Axios์™€ ๊ฐ™์€ HTTP ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

despiteallthat.tistory.com

 

 

 

Axios in React: A Guide for Beginners - GeeksforGeeks

Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.

www.geeksforgeeks.org

 

 

 

[React] React ์—์„œ Axios ์‚ฌ์šฉํ•˜๊ธฐ

[React] React ์—์„œ Axios ์‚ฌ์šฉํ•˜๊ธฐ Axios ๋ž€? Axios๋Š” Promise ๊ธฐ๋ฐ˜์˜ HTTP ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ๋ธŒ๋ผ์šฐ์ € ๋ฐ Node.js ํ™˜๊ฒฝ์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ๋Š” XMLHttpRequests ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , node.js

ramincoding.tistory.com