티스토리 뷰
YTS API 프록시를 통한 안정적인 데이터 요청 예제
프록시 서버는 클라이언트와 원본 서버 사이에서 중개 역할을 수행하며, 클라이언트가 원본 서버에 직접 접근하는 대신 프록시를 통해 요청을 전달하도록 합니다. 이를 통해 데이터 보안, API 관리, 트래픽 분산, 원본 서버 주소의 유연한 변경 등 여러 장점이 있습니다.
예를 들어 YTS API는 영화 정보를 제공하는 서비스이지만, 사이트 주소가 자주 변경됩니다. 프록시 서버를 사용하면, 원본 주소 변경에 대응하여 앱의 코드를 수정할 필요 없이 프록시 서버의 주소만 변경하면 됩니다.
이제 프록시 서버를 만드는 방법과 이를 Vercel에 배포하는 과정을 단계별로 설명하겠습니다.
1. 로컬 환경에서 간단한 프록시 서버 구축하기
1-1. 프로젝트 초기화 및 환경 설정
1. 프로젝트 폴더 생성 및 이동
mkdir yts-proxy-server
cd yts-proxy-server
2. Node.js 초기화 및 필수 라이브러리 설치
npm init -y
npm install express axios
- express: 웹 서버를 손쉽게 구축할 수 있는 라이브러리입니다.
- axios: YTS API와 통신하여 데이터를 요청하기 위한 라이브러리입니다.
1-2. 프록시 서버 코드 작성
1. index.js 파일 생성 후, 아래와 같이 코드를 작성합니다.
const express = require("express");
const axios = require("axios");
const app = express();
const PORT = process.env.PORT || 3000;
// YTS API의 기본 URL
const YTS_API_URL = "https://yts.mx/api/v2/list_movies.json";
app.get("/list_movies.json", async (req, res) => {
try {
// YTS API에 요청을 보낸 후 응답을 클라이언트에 전달
const response = await axios.get(YTS_API_URL);
res.json(response.data);
} catch (error) {
console.error(error);
res.status(500).json({ error: "YTS API 데이터 가져오기에 실패했습니다." });
}
});
app.listen(PORT, () => {
console.log(`프록시 서버가 http://localhost:${PORT}에서 실행 중입니다.`);
});
2. 로컬 테스트
node index.js
그런 다음 브라우저에서 http://localhost:3000/list_movies.json로 이동하여 API 응답이 잘 표시되는지 확인합니다.
2. Vercel을 이용해 프록시 서버 배포하기
Vercel을 사용하면 로컬 서버를 클라우드에 배포하여 누구나 접근할 수 있는 서버로 전환할 수 있습니다.
2-1. Vercel 설치 및 초기 설정
1. Vercel CLI 설치 및 로그인
npm install -g vercel
vercel login
2-2. Vercel 배포 설정
1. vercel.json 파일 생성하여 다음 설정을 추가합니다.
{
"version": 2,
"builds": [
{ "src": "index.js", "use": "@vercel/node" }
],
"routes": [
{ "src": "/(.*)", "dest": "index.js" }
]
}
이 파일은 Vercel이 해당 프로젝트를 Node.js 서버로 인식하여 배포하도록 설정하는 역할을 합니다.
2-3. Vercel로 배포하기
프로젝트 폴더에서 다음 명령어를 입력하여 Vercel에 배포합니다.
vercel
명령어 실행 후 URL이 제공되면, 해당 URL에서 API 요청이 잘 되는지 확인할 수 있습니다. 예를 들어, https://<your-vercel-app>.vercel.app/list_movies.json과 같은 주소로 요청하여 데이터가 반환되는지 확인합니다.
프록시 서버의 활용 및 장점
프록시 서버는 다음과 같은 용도로 활용할 수 있습니다.
- API 주소 변경: 원본 API 주소가 바뀌더라도 프록시 서버에서만 수정하면 됩니다.
- 보안 강화: 민감한 정보를 숨기거나 IP 보호가 가능합니다.
- 트래픽 관리: 여러 클라이언트의 요청을 프록시 서버가 대신 처리하여 원본 서버에 부하를 줄일 수 있습니다.
이렇게 프록시 서버를 구축하고 Vercel에 배포하면, 언제든 어디서든 YTS API와 같은 서비스에 안정적으로 접근할 수 있습니다.
'알아두면 쓸데 있는 > 코딩 지식' 카테고리의 다른 글
프론트엔드 빌드 도구 Vite란? (0) | 2024.11.12 |
---|---|
GitHub Pages로 웹사이트를 무료로 배포하는 방법 (1) | 2024.11.12 |
React와 ReactJS는 같은 용어 (0) | 2024.11.11 |
브라우저로 실시간 화상 기능 구현하기 getUserMedia (0) | 2024.11.09 |
CORS(Cross-Origin Resource Sharing)란? (0) | 2024.11.09 |
- Total
- Today
- Yesterday
- semver)
- Jest
- 소프트웨어 버전 관리
- Collections
- defaultdict
- structuredclone()
- useEffect
- named export vs default export
- stdlib.h
- javascript 필수 문법
- 쉽게 풀어쓴 C언어 Express
- counter
- pwa(progressive web app)
- ajax (asynchronous javascript and xml)
- 중첩 함수(nested function)
- core web vitals
- 원시값(primitive)
- 시맨틱 버전(semantic versioning
- chrome extension 자동 배포
- x.y.z (메이저.마이너.패치)
- json.parse(json.stringify())
- react
- 프로세스 강제 종료
- inp
- react router
- jackson 라이브러리
- math.h
- mermaid-cli
- styled-components
- public vs assets
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |