Bygga ett REST API med TypeScript och Express

TypeScript och Express är en kraftfull kombination för att bygga robusta REST API:er. TypeScript ger typsäkerhet, bättre verktyg och förbättrad utvecklingsupplevelse, medan Express är ett minimalistiskt webbramverk för Node.js. Den här guiden går igenom stegen för att bygga ett REST API med TypeScript och Express.

Konfigurera projektet

Börja med att skapa en ny katalog för projektet och initiera en Node.js-applikation.

mkdir typescript-express-api
cd typescript-express-api
npm init -y

Installera sedan de nödvändiga beroenden för Express och TypeScript.

npm install express
npm install --save-dev typescript ts-node @types/node @types/express

Skapa en tsconfig.json fil för att konfigurera TypeScript. Kör följande kommando:

npx tsc --init

Ändra filen tsconfig.json så att den passar projektets behov, aktivera alternativ som "strict", "esModuleInterop" och ställ in utdatakatalogen till "dist".

Skapa Express Server

Skapa en ny mapp med namnet src och inuti den, skapa en fil med namnet index.ts. Den här filen kommer att fungera som ingångspunkt för Express-servern.

import express, { Request, Response } from 'express';

const app = express();
const PORT = process.env.PORT || 3000;

app.use(express.json());

app.get('/', (req: Request, res: Response) => {
  res.send('Hello, TypeScript and Express!');
});

app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

För att köra servern, använd följande kommando:

npx ts-node src/index.ts

Definiera API-rutter

Skapa en ny mapp inuti src som heter routes. Skapa en fil med namnet userRoutes.ts i den här mappen för att definiera rutter för hantering av användarrelaterade förfrågningar.

import { Router, Request, Response } from 'express';

const router = Router();

router.get('/users', (req: Request, res: Response) => {
  res.json({ message: 'Get all users' });
});

router.post('/users', (req: Request, res: Response) => {
  const user = req.body;
  res.json({ message: 'User created', user });
});

export default router;

I filen index.ts importerar du userRoutes och använder dem i programmet.

import userRoutes from './routes/userRoutes';

app.use('/api', userRoutes);

Skapa en Controller och Service Layer

Organisera koden genom att skapa separata lager för kontroller och tjänster. Skapa två nya mappar inuti src: controllers och services.

Skapa en fil med namnet userController.ts i mappen controllers.

import { Request, Response } from 'express';
import { getAllUsers, createUser } from '../services/userService';

export const getUsers = (req: Request, res: Response) => {
  const users = getAllUsers();
  res.json(users);
};

export const addUser = (req: Request, res: Response) => {
  const newUser = req.body;
  const user = createUser(newUser);
  res.json(user);
};

I mappen services skapar du en fil med namnet userService.ts.

interface User {
  id: number;
  name: string;
}

let users: User[] = [];

export const getAllUsers = (): User[] => {
  return users;
};

export const createUser = (user: User): User => {
  users.push(user);
  return user;
};

Uppdatera userRoutes.ts för att använda dessa kontroller:

import { Router } from 'express';
import { getUsers, addUser } from '../controllers/userController';

const router = Router();

router.get('/users', getUsers);
router.post('/users', addUser);

export default router;

Testar REST API

För att testa REST API, använd ett verktyg som Postman eller curl för att skicka förfrågningar till slutpunkterna. Starta servern och gör en GET-begäran till /api/users och en POST-begäran till /api/users med en JSON-nyttolast.

Slutsats

Genom att följa dessa steg kan ett REST API skapas med TypeScript och Express. TypeScript lägger till typsäkerhet och en bättre utvecklingsupplevelse, medan Express tillhandahåller ett enkelt och kraftfullt ramverk för att bygga RESTful-tjänster. Denna inställning kan förbättras ytterligare genom att lägga till validering, felhantering och mer komplex affärslogik.