[typescript] 타입스크립트와 함께 사용하는 API 버전 관리 및 라우팅 예시
타입스크립트(TypeScript)를 사용하여 백엔드 API를 개발하고 있다면 API 버전 관리와 라우팅을 구현하는 것이 중요합니다. 이 블로그 포스트에서는 Express 프레임워크를 사용하여 타입스크립트와 함께 API 버전 관리와 라우팅을 어떻게 구현하는지에 대해 알아보겠습니다.
API 버전 관리
API 버전 관리를 위해 URL 경로에 버전 번호를 포함시키는 방식을 사용할 것입니다. 각 API 버전은 별도의 라우팅 모듈로 구성되어야 합니다.
예를 들어, v1
버전의 API는 /api/v1
경로로 접근할 수 있고, v2
버전의 API는 /api/v2
경로로 접근할 수 있습니다.
라우팅 및 컨트롤러
라우팅을 위해 Express 프레임워크를 사용하며, 컨트롤러를 통해 각 API 엔드포인트에 대한 동작을 정의합니다.
// app.ts
import express from 'express';
import v1Router from './routes/v1';
import v2Router from './routes/v2';
const app = express();
app.use('/api/v1', v1Router);
app.use('/api/v2', v2Router);
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
// routes/v1.ts
import express from 'express';
import { getItems, getItem } from '../controllers/v1';
const router = express.Router();
router.get('/items', getItems);
router.get('/items/:id', getItem);
export default router;
// routes/v2.ts
import express from 'express';
import { getItems, getItem, createItem } from '../controllers/v2';
const router = express.Router();
router.get('/items', getItems);
router.get('/items/:id', getItem);
router.post('/items', createItem);
export default router;
컨트롤러 구현
컨트롤러는 각 API 엔드포인트에 대한 실제 로직을 포함하고 있습니다.
// controllers/v1.ts
import { Request, Response } from 'express';
export const getItems = (req: Request, res: Response) => {
// v1 버전의 로직 구현
};
export const getItem = (req: Request, res: Response) => {
// v1 버전의 로직 구현
};
// controllers/v2.ts
import { Request, Response } from 'express';
export const getItems = (req: Request, res: Response) => {
// v2 버전의 로직 구현
};
export const getItem = (req: Request, res: Response) => {
// v2 버전의 로직 구현
};
export const createItem = (req: Request, res: Response) => {
// v2 버전의 로직 구현
};
이러한 방식으로 타입스크립트와 Express를 함께 사용하여 API 버전 관리와 라우팅을 구현할 수 있습니다. 이를 통해 코드를 깔끔하게 유지하고 API 엔드포인트에 대한 관리를 효과적으로 할 수 있습니다.
참고 문헌:
- Express 라우팅 가이드: https://expressjs.com/en/guide/routing.html
- TypeScript 핸드북: https://www.typescriptlang.org/docs/handbook/intro.html