HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🐣
프론트엔드 데브코스 4기 교육생
/
🍏
김나영팀
/
앙골라 ANGOLA
앙골라 ANGOLA
/
차세진

차세진

Date
Sep 3, 2023 04:18 PM
Tag
기술 스택 선택 이유
생성자
axios요청 configinstance 활용

axios

👉🏼
왠만한건 다른 분들이 더 잘 써주셔서..! axios 를 쓰면 뭐가 더 편해질까에 대해 생각하며 찾아봤습니닷!
  • Promise 기반으로 요청 및 응답이 이루어지기 때문에, response 데이터를 다루기 쉽다 (then!)
  • 자동으로 JSON 데이터를 처리해준다.
  • fetch 는 response timeout 이 없어서 요청 시 계속 기다려야 한다는 문제점이 있다. 하지만 axios 를 사용하면 timeout 옵션 기능을 통해 해당 문제점을 처리할 수 있다.
  • baseURL, timeout, header, transformRequest 등등 요청 시 여러 기능들을 지원한다 ⇒ 간단해짐
  • 인스턴스를 생성해서 기본 옵션을 계속 재사용할 수 있다 ⇒ 코드 짧아짐

요청 config

axios 를 통한 데이터 요청 시 사용할 수 있는 config 옵션들!
여기에서 가져왔음!

url

  • 필수 프로퍼티
  • 요청에 사용될 서버 URL

method

  • 요청을 생성할 때 사용되는 메소드
  • 기본값 : get

baseURL

  • url 이 절대값이 아니라면 (변수), baseURL 은 URL 앞에 붙음
  • 인스턴스 만들어서 쓸 때 사용하는 듯
 

headers

  • 사용자 지정 헤더

transformRequest

  • 요청 데이터를 서버로 전송하기 전에 변경할 수 있게 해줌
  • PUT, POST, DELETE 에서만 적용 (GET X)
  • 헤더 객체 수정 가능
  • transformRequest : [ function(data, headers){ … return data; } ]

params

  • 요청과 함께 전송되는 URL 파라미터
  • params: { id: …., name: …. }
 

timeout

  • 요청 최대 시간 지정 (ms)
  • 요청이 이거보다 오래 걸리면 요청 중단
  • timeout: 5000
  • 기본값은 0 (없다는 뜻)

data

  • 요청 body 로 전송될 데이터
  • PUT, POST, DELETE 에서만 적용 (GET X)
    • data: { firstName: 'Fred' }
  • POST 이면 이런거도 된다 함
    • data: 'Country=Brasil&City=Belo Horizonte',

instance 활용

axios 인스턴스를 사용하면 aseURL 과 고정 옵션들을 재사용해서 요청을 보낼 수 있음
baseURL, headers, 등등 여러 옵션들을 한번만 써서 변수에 저장하고, 계속 그 변수에 요청 메소드를 체이닝하면 된다는 뜻!
 
  • 인스턴스 생성
const instance = axios.create({ baseURL: 'https://some-domain.com/api/', timeout: 1000, headers: {'X-Custom-Header': 'foobar'} });
  • 인스턴스를 활용한 GET 요청 예시
instance.get('/some-endpoint') .then(function (response) { console.log(response.data); }) .catch(function (error) { console.error(error); });
  • 사용 가능한 인스턴스 메소드
    • get, delete, post, put …
    • 다 된다!
  • 인스턴스를 활용한 POST 요청 예시
const dataToSend = { key1: 'value1', key2: 'value2' }; instance.post('/some-endpoint',dataToSend) .then(function (response) { console.log(response.data); }) .catch(function (error) { console.error(error); }) axios.post('https://some-domain.com/api/some-endpoint', { timeout: 1000, headers: {'X-Custom-Header': 'foobar'}, data: dataToSend }).then(function (response) { console.log(response.data); }) .catch(function (error) { console.error(error); })