Bygge et REST API med TypeScript og Express

TypeScript og Express er en kraftig kombinasjon for å bygge robuste REST APIer. TypeScript gir typesikkerhet, bedre verktøy og forbedret utviklingsopplevelse, mens Express er et minimalistisk nettrammeverk for Node.js. Denne veiledningen vil gå gjennom trinnene for å bygge en REST API ved hjelp av TypeScript og Express.

Sette opp prosjektet

Start med å opprette en ny katalog for prosjektet og initialisere en Node.js-applikasjon.

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

Installer deretter de nødvendige avhengighetene for Express og TypeScript.

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

Opprett en tsconfig.json-fil for å konfigurere TypeScript. Kjør følgende kommando:

npx tsc --init

Endre tsconfig.json filen for å passe prosjektets behov, aktiver alternativer som "strict", "esModuleInterop", og sett utdatakatalogen til "dist".

Opprette Express Server

Opprett en ny mappe kalt src og inni den, lag en fil som heter index.ts. Denne filen vil tjene som inngangspunkt for Express-serveren.

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}`);
});

For å kjøre serveren, bruk følgende kommando:

npx ts-node src/index.ts

Definere API-ruter

Opprett en ny mappe inne i src kalt routes. I denne mappen oppretter du en fil med navnet userRoutes.ts for å definere ruter for håndtering av brukerrelaterte forespørsler.

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 importerer du userRoutes og bruker dem i applikasjonen.

import userRoutes from './routes/userRoutes';

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

Opprette en kontroller og servicelag

Organiser koden ved å lage separate lag for kontrollere og tjenester. Opprett to nye mapper inne i src: kontrollere og tjenester.

I mappen controllers oppretter du en fil med navnet userController.ts.

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 oppretter du en fil med navnet 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;
};

Oppdater userRoutes.ts for å bruke disse kontrollerene:

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

const router = Router();

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

export default router;

Tester REST API

For å teste REST API, bruk et verktøy som Postman eller curl for å sende forespørsler til endepunktene. Start serveren og foreta en GET-forespørsel til /api/users og en POST-forespørsel til /api/users med en JSON-nyttelast.

Konklusjon

Ved å følge disse trinnene kan en REST API opprettes ved hjelp av TypeScript og Express. TypeScript legger til typesikkerhet og en bedre utviklingsopplevelse, mens Express gir et enkelt og kraftig rammeverk for å bygge RESTful-tjenester. Dette oppsettet kan forbedres ytterligere ved å legge til validering, feilhåndtering og mer kompleks forretningslogikk.