API Versioning

API versioning is a technique used to manage changes in your API without breaking existing clients.

When an API evolves, introducing new features or modifying existing ones, older versions should still work for users relying on them.

Common Ways to Version APIs:

Simple API Versioning Example (TypeScript)

Directory Structure

src/
 ├── controllers/
 │     ├── v1/
 │     │     └── user.controller.ts
 │     └── v2/
 │           └── user.controller.ts
 ├── routes/
 │     ├── v1/
 │     │     └── user.routes.ts
 │     └── v2/
 │           └── user.routes.ts
 └── app.ts

Example Code

📁 controllers/v1/user.controller.ts

import { Request, Response } from 'express';

export const getUsersV1 = (req: Request, res: Response) => {
  res.send("Response from API v1 - User List");
};

📁 controllers/v2/user.controller.ts

import { Request, Response } from 'express';

export const getUsersV2 = (req: Request, res: Response) => {
  res.send("Response from API v2 - Enhanced User List");
};

📁 routes/v1/user.routes.ts

import express from 'express';
import { getUsersV1 } from '../../controllers/v1/user.controller';

const router = express.Router();

router.get('/users', getUsersV1);

export default router;

📁 routes/v2/user.routes.ts

import express from 'express';
import { getUsersV2 } from '../../controllers/v2/user.controller';

const router = express.Router();

router.get('/users', getUsersV2);

export default router;

📁 app.ts