็„ก์ œ

Axios (์•ก์‹œ์˜ค์Šค) ๋ณธ๋ฌธ

<React>

Axios (์•ก์‹œ์˜ค์Šค)

yo-u-loo 2026. 7. 23. 17:03

 

๐ŸŸก Axios

์›น ๋ธŒ๋ผ์šฐ์ €์™€ Node.js์—์„œ HTTP ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” Promise ๊ธฐ๋ฐ˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

 

โ—ผ๏ธ ์ฃผ์š” ํŠน์ง•

  • GET, POST, PUT, PATCH, DELETE ๋“ฑ ๋‹ค์–‘ํ•œ HTTP ๋ฉ”์„œ๋“œ ์ง€์›
  • Promise ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
  • ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response) ๊ฐ€๋กœ์ฑ„๊ธฐ(Interceptor) ์ง€์›
  • ์š”์ฒญ ๋ฐ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ JSON ๋ณ€ํ™˜
  • ์š”์ฒญ ์ทจ์†Œ ๋ฐ ํƒ€์ž„์•„์›ƒ ์„ค์ • ์ง€์›

 

โ—ผ๏ธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

import axios from 'axios';

// ์„œ๋ฒ„์—์„œ ์ƒํ’ˆ ๋ชฉ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์˜ˆ์‹œ
axios.get('https://api.example.com/products')
  .then(response => {
    // ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
    console.log(response.data); // ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ
  })
  .catch(error => {
    // ์š”์ฒญ์ด ์‹คํŒจํ–ˆ์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
    console.error('๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ:', error);
  });
  • ๋™์ž‘ ์ˆœ์„œ:
    1. axios.get()์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
    2. ์š”์ฒญ์ด ์„ฑ๊ณตํ•˜๋ฉด .then()์ด ์‹คํ–‰๋œ๋‹ค.
    3. ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋Š” response.data์— ์ €์žฅ๋œ๋‹ค.
    4. ์š”์ฒญ์ด ์‹คํŒจํ•˜๋ฉด .catch()๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

 

โ—ผ๏ธ ์ฃผ์š” HTTP ๋ฉ”์„œ๋“œ

๋ฉ”์„œ๋“œ ์—ญํ• 
axios.get() ๋ฐ์ดํ„ฐ ์กฐํšŒ
axios.post() ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
axios.put() ๋ฐ์ดํ„ฐ ์ „์ฒด ์ˆ˜์ •
axios.patch() ๋ฐ์ดํ„ฐ ์ผ๋ถ€ ์ˆ˜์ •
axios.delete() ๋ฐ์ดํ„ฐ ์‚ญ์ œ
.then() ์š”์ฒญ ์„ฑ๊ณต ์ฒ˜๋ฆฌ
.catch() ์š”์ฒญ ์‹คํŒจ ์ฒ˜๋ฆฌ

 

โ—ผ๏ธ ์‘๋‹ต ๊ฐ์ฒด(Response)

Axios๋Š” ์š”์ฒญ์ด ์„ฑ๊ณตํ•˜๋ฉด ์‘๋‹ต ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

axios.get("/users")
  .then((response) => {
    console.log(response.data);
    console.log(response.status);
    console.log(response.headers);
  });
  • response.data: ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ.
  • response.status: HTTP ์ƒํƒœ ์ฝ”๋“œ.
  • response.headers: ์‘๋‹ต ํ—ค๋”.
  • response.config: ์š”์ฒญ ์„ค์ • ์ •๋ณด.

 

โ—ผ๏ธ React์—์„œ Axios ์‚ฌ์šฉ

React์—์„œ๋Š” useEffect์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ๋‹ค.

import { useEffect } from "react";
import axios from "axios";

useEffect(() => {
  axios.get("/products")
    .then((response) => {
      console.log(response.data);
    })
    .catch((error) => {
      console.error(error);
    });
}, []);
  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ฒ˜์Œ ๋ Œ๋”๋ง๋  ๋•Œ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํŒจํ„ด์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

 

 

๐Ÿ“ POINT ๐Ÿ“

โœ”๏ธ Axios๋Š” Promise ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ .then(), .catch() ๋˜๋Š” async/await์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. โœ”๏ธ

โœ”๏ธ ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋Œ€๋ถ€๋ถ„ response.data๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•œ๋‹ค. โœ”๏ธ

โœ”๏ธ React์—์„œ๋Š” useEffect ์•ˆ์—์„œ API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ผ๋ฐ˜์ ์ด๋‹ค. โœ”๏ธ

โœ”๏ธ ์ตœ๊ทผ์—๋Š” JavaScript์˜ ๋‚ด์žฅ API์ธ fetch()๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€๋งŒ,

Axios๋Š” ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋‹ค์–‘ํ•œ ํŽธ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ์—ฌ์ „ํžˆ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. โœ”๏ธ

 


 

๐Ÿ”— axios ์„ค์น˜ ๐Ÿ”—

terminal

npm install axios