Javascript/Node.js

[ Node.js ] - axios와 node-fetch로 통신하기

algml0703 2022. 6. 2. 12:32
반응형

Axios

공식 문서에 따르면 axios는 node.js와 브라우저를 위한 Promise 기반 HTTP 클라이언트 라이브러리이다.

특징

  • 브라우저에서는 XMLHttpRequest 객체, 서버측에서는 http 모듈을 사용한다.
  • promise API를 지원한다.
npm install axios

 

사용법

모듈을 불러와 정의한다.

import axios from 'axios'; // const axios = require('axios');

config 설정

const AUTH_TOKEN = process.env.AUTHTOKEN

// 전역 AXIOS 기본값 설정
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN!
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

// 인스턴스 생성시 기본값 설정
const instance = axios.create({
    baseURL: 'https://api.example.com',
    timeout: 3000
    // 3초간 응답을 기다린다.
});

// 인스턴스의 기본값 변경
instance.defaults.baseURL = 'https://api.example2.com';

// 요청에 대한 인터셉터 설정
instance.interceptors.request.use(
  (config) => {
    console.log("conig === : ", config);
    return config;
  },
  (error) => {
    console.error("error === : ", error);
    return Promise.reject(error);
  }
);

// 응답에 대한 인터셉터 설정
instance.interceptors.response.use(
  (response) => {
    return response;
  },
  (error) => {
    return Promise.reject(error || "Error");
  }
);

get 사용

- axios(config)

axios({
    method: 'get',
    headers: {
    	'Content-Type':'application/json'
    },
    url: '/api/v1/users/1'
})

post 사용 

axios({
	method: 'post',
    headers: {
    	'Content-Type' : 'application/json'
    },
    data:{
    	id: 'id1',
        password: 'pw1' 
    }
})

node-fetch

node-fetch가 axios보다 조금 더 가볍다.

npm install node-fetch

모듈을 불러온다.

import fetch from 'node-fetch';

get 요청

const response = await fetch('https://api.github.com/users/github');
const data = await response.json();

console.log(data);

post 요청

const response = await fetch('https://httpbin.org/post', {
    method: 'POST',
    body: 'a=1'
})
const data = await response.json();

console.log(data);

post (With Json)

const body = {a: 1};

const response = await fetch('https://httpbin.org/post', {
	method: 'post',
	body: JSON.stringify(body),
	headers: {'Content-Type': 'application/json'}
});
const data = await response.json();

console.log(data);

 

출처

axios

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

node-fetch

https://www.npmjs.com/package/node-fetch

 

반응형

'Javascript > Node.js' 카테고리의 다른 글

[ Node.js ] - node.js란? ( + 기본 코드 )  (0) 2022.06.10
[ Node.js ] - 서버 DDos 공격 막기  (0) 2022.06.02
[ Node.js ] - swagger-ui  (0) 2022.04.05
[ Node.js] - prisma  (0) 2022.04.05
[ Node.js ] - express-session  (0) 2022.04.05