Opbygning af en REST API med TypeScript og Express

TypeScript og Express er en kraftfuld kombination til at bygge robuste REST API'er. TypeScript giver typesikkerhed, bedre værktøj og forbedret udviklingsoplevelse, mens Express er en minimalistisk webramme for Node.js. Denne guide vil gennemgå trinene til at bygge en REST API ved hjælp af TypeScript og Express.

Opsætning af projektet

Start med at oprette en ny mappe til projektet og initialisere en Node.js-applikation.

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

Installer derefter de nødvendige afhængigheder til Express og TypeScript.

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

Opret en tsconfig.json fil for at konfigurere TypeScript. Kør følgende kommando:

npx tsc --init

Rediger tsconfig.json-filen, så den passer til projektets behov, aktiver muligheder som "strict", "esModuleInterop", og indstil output-mappen til "dist".

Oprettelse af Express Server

Opret en ny mappe ved navn src og inde i den, opret en fil med navnet index.ts. Denne fil vil tjene som indgangspunkt 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 at køre serveren skal du bruge følgende kommando:

npx ts-node src/index.ts

Definition af API-ruter

Opret en ny mappe inde i src ved navn routes. I denne mappe skal du oprette en fil med navnet userRoutes.ts for at definere ruter til håndtering af brugerrelaterede anmodninger.

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 skal du importere userRoutes og bruge dem i applikationen.

import userRoutes from './routes/userRoutes';

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

Oprettelse af en controller og servicelag

Organiser koden ved at oprette separate lag til controllere og tjenester. Opret to nye mapper inde i src: controllere og services.

I mappen controllers skal du oprette 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 skal du oprette 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;
};

Opdater userRoutes.ts for at bruge disse controllere:

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

const router = Router();

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

export default router;

Test af REST API

For at teste REST API skal du bruge et værktøj som Postman eller curl til at sende anmodninger til slutpunkterne. Start serveren og lav en GET-anmodning til /api/users og en POST-anmodning til /api/users med en JSON-nyttelast.

Konklusion

Ved at følge disse trin kan en REST API oprettes ved hjælp af TypeScript og Express. TypeScript tilføjer typesikkerhed og en bedre udviklingsoplevelse, mens Express giver en enkel og kraftfuld ramme til opbygning af RESTful-tjenester. Denne opsætning kan forbedres yderligere ved at tilføje validering, fejlhåndtering og mere kompleks forretningslogik.