Axios란?

Axios는 브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리이다.

백엔드 및 프론트엔드에서 통신을 쉽게하기 위해 Ajax와 함께 사용된다.

 

사용법 및 예제는 아래 공식문서를 참고하면 된다.

https://axios-http.com/docs/intro

 

Getting Started | Axios Docs

Getting Started Promise based HTTP client for the browser and node.js What is Axios? Axios is a promise-based HTTP Client for node.js and the browser. It is isomorphic (= it can run in the browser and nodejs with the same codebase). On the server-side it u

axios-http.com

 

npm install axios --save

먼저 axios 패키지를 설치해준다.

 

// client/src/components/views/LandingPage/LandingPage.js

import React, { useEffect } from 'react'
import axios from 'axios';

function LandingPage() {

    useEffect(() => {
        axios.get('/api/hello')
            .then(response => console.log(response.data))
    }, [])

    return (
        <div>
            LandingPage
        </div>
    )
}
export default LandingPage

다음과 같이 axios 객체를 이용하여 간단하게 HTTP 요청을 보낼 수 있다.

 

// server/index.js

app.get('/api/hello', (req, res) => {
  res.send("안녕하세요~");
})

서버측에서도 요청을 받기위해 다음과 같이 추가해주었다.

 

 

사용자의 서버 포트는 5000번이고 클라이언트 포트는 3000번이기 때문에  이대로 사용한다면 에러가 난다.

 

 

 useEffect(() => {
        axios.get('http://localhost:5000/api/hello')
            .then(response => console.log(response.data))
    }, [])

이를 해결하기 위해 5000번으로 요청을 보내도 여전히 에러가 난다.

이는 CORS 정책 때문이다. 외부에서 요청을 보내면 보안상의 이슈가 있을 수 있기 때문에 CORS 정책이 필요하다.
(CORS란? : Cross-Origin Resource Sharing의 약자로 서로 다른 Origin 사이에서 자원을 공유할 때 사용되는 정책)

 

 

Proxy로 CORS 해결

CORS를 해결하기 위해서 proxy 서버를 이용하는 방법을 사용하였다.

 

https://create-react-app.dev/docs/proxying-api-requests-in-development/

 

Proxying API Requests in Development | Create React App

Note: this feature is available with react-scripts@0.2.3 and higher.

create-react-app.dev

 

npm install http-proxy-middleware --save

먼저 http-proxy-middleware 를 설치해준다.

 

// client/src/setupProxy.js

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/api',
    createProxyMiddleware({
      target: 'http://localhost:5000',
      changeOrigin: true,
    })
  );
};

proxy 설정을 추가해줌으로 /api로 시작되는 API는 target으로 설정된 서버 URL로 호출하도록 설정된다.

changeOrigin 설정은 대상 서버 구성에 따라 호스트 헤더가 변경되도록 설정해주는 옵션이다.

'Study > react' 카테고리의 다른 글

[React] Redux  (0) 2021.10.27
[React] Concurrently (프론트, 백 서버 한번에 켜기)  (0) 2021.10.27
[React] react-router-dom  (0) 2021.10.27
[Node js] Authentication 유저 인증 기능  (0) 2021.10.04
[Node js] JWT 를 이용한 로그인  (0) 2021.10.04

+ Recent posts