본문 바로가기
부트캠프교육중/HTTP, 네트워크

프록시 Proxy 사용법

by 뭉지야 2023. 4. 4.
728x90

< webpack dev server proxy >

-webpack dev server의 proxy를 사용하게 되면, 브라우저 API를 요청할 때 백엔드 서버에 직접적으로 요청을 하지 않고, 현재 개발서버의 주소로 우회 요청을 하게 됩니다. 그러면 웹팩 개발 서버에서 해당 요청을 받아 그대로 백엔드 서버로 전달하고, 백엔드 서버에서 응답한 내용을 다시 브라우저쪽으로 반환합니다.
-proxy는 보통 맨 밑에 작성을 해 금방 찾을 수 있도록 합니다.

...
"browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
	"proxy" : "우회할 API 주소"
}

기존의 fetch, 혹은 axios를 통해 요청하던 부분에서 도메인 부분을 제거합니다.

export async function getAllfetch() {

    const response = await fetch('우회할 api주소/params');
    .then(() => {
			...
		})
}

밑의처럼 바꾼다.

export async function getAllfetch() {

    const response = await fetch('/params');
    .then(() => {
			...
		})
}

< React Proxy 사용법 >

- webpack dev server 에서 제공하는 proxy는 전역적인 설정이기 때문에, 종종 해당 방법이 충분히 적용되지 않는 경우가 생기기도 합니다. 그래서 수동으로 proxy를 적용해줘야 하는 경우가 있는데, 이때는 http-proxy-middleware 라이브러리를 사용해야 합니다.

설치먼저한다.

npm install http-proxy-middleware --save



그리고 React App의 src 파일 안에서 setupProxy.js 파일을 생성하고, 안에서 설치한 라이브러리 파일을 불러온 다음, 아래와 같이 작성을 합니다.

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

module.exports = function(app) {
  app.use(
    '/api', //proxy가 필요한 path prameter를 입력합니다.
    createProxyMiddleware({
      target: 'http://localhost:5000', //타겟이 되는 api url를 입력합니다.
      changeOrigin: true, //대상 서버 구성에 따라 호스트 헤더가 변경되도록 설정하는 부분입니다.
    })
  );
};


그리고 기존의 fetch, 혹은 axios를 통해 요청하던 부분에서 도메인 부분을 제거합니다.

export async function getAllfetch() {

    const response = await fetch('우회할 api주소/params');
    .then(() => {
			...
		})
}

밑의처럼 바꾼다.

export async function getAllfetch() {

    const response = await fetch('/params');
    .then(() => {
			...
		})
}

 

 


출처

코드스테이츠

728x90

'부트캠프교육중 > HTTP, 네트워크' 카테고리의 다른 글

GraphQL 구조  (0) 2023.03.28
GraphQL VS Rest API  (0) 2023.03.28
GraphQL  (0) 2023.03.28
HTTPS  (0) 2023.03.12
OAuth  (0) 2023.03.09