[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 엔드포인트에 대한 관리를 효과적으로 할 수 있습니다.

참고 문헌: