Einleitung: Warum TypeScript für REST-APIs?
Moderne Webentwicklung ist ohne klare und skalierbare APIs nicht denkbar. TypeScript, als streng typisierte Obermenge von JavaScript, ermöglicht es Ihnen, zuverlässige REST-APIs mit einer minimalen Anzahl von Laufzeitfehlern zu erstellen. In diesem Artikel werden wir praktisch, Schritt für Schritt, eine vollwertige REST-API in TypeScript unter Verwendung des beliebten Express-Frameworks erstellen. Der gesamte Vorgang dauert nicht länger als 30 Minuten, und das Ergebnis ist bereit für den Einsatz in realen Projekten.
Wir werden behandeln: Projektinitialisierung, TypeScript-Konfiguration, Erstellen von Routen, Arbeiten mit Middleware, Fehlerbehandlung und Endpunkt-Tests. Alle Codebeispiele können sofort ausgeführt und an Ihre Aufgaben angepasst werden.
Schritt 1: Projektinitialisierung und Abhängigkeitsinstallation
Erstellen Sie zunächst ein neues Verzeichnis für das Projekt und initialisieren Sie es. Öffnen Sie Ihr Terminal und führen Sie Folgendes aus:
mkdir my-ts-apicd my-ts-apinpm init -yInstallieren Sie nun die erforderlichen Pakete:
npm install expressnpm install -D typescript @types/node @types/express ts-node nodemonErstellen Sie die TypeScript-Konfigurationsdatei:
npx tsc --initBearbeiten Sie tsconfig.json, um die folgenden Optionen einzufügen:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true, "skipLibCheck": true }}Fügen Sie Skripte zu package.json hinzu:
"scripts": { "build": "tsc", "start": "node dist/index.js", "dev": "nodemon --exec ts-node src/index.ts"}Schritt 2: Erstellen der grundlegenden Struktur und des ersten Endpunkts
Erstellen Sie einen src-Ordner und darin eine Datei index.ts. Beginnen wir mit einem einfachen Server, der auf GET-Anfragen antwortet:
import express, { Request, Response } from 'express';
const app = express();const PORT = process.env.PORT || 3000;
// Middleware zum Parsen von JSONapp.use(express.json());
// Basis-Routeapp.get('/', (req: Request, res: Response) => { res.send('REST-API in TypeScript funktioniert!');});
app.listen(PORT, () => { console.log(`Server läuft unter http://localhost:${PORT}`);});Starten Sie den Server mit dem Befehl npm run dev und öffnen Sie http://localhost:3000. Sie sehen eine Willkommensnachricht.
Erstellen eines Datenmodells
Für eine vollwertige API benötigen wir eine Entität. Lassen Sie uns ein einfaches Benutzermodell erstellen:
// src/models/user.tsexport interface User { id: number; name: string; email: string; age: number;}
export type CreateUserDto = Omit; Schritt 3: Implementieren von CRUD-Operationen
Jetzt erstellen wir einen Controller und Routen für die Arbeit mit Benutzern. Erstellen Sie eine Datei src/routes/users.ts:
import { Router, Request, Response } from 'express';import { User, CreateUserDto } from '../models/user';
const router = Router();let users: User[] = [ { id: 1, name: 'Ivan', email: 'ivan@example.com', age: 28 }, { id: 2, name: 'Maria', email: 'maria@example.com', age: 32 }];let nextId = 3;
// GET /users - alle Benutzer abrufenrouter.get('/', (req: Request, res: Response) => { res.json(users);});
// GET /users/:id - Benutzer nach ID abrufenrouter.get('/:id', (req: Request, res: Response) => { const id = parseInt(req.params.id); const user = users.find(u => u.id === id); if (!user) { return res.status(404).json({ message: 'Benutzer nicht gefunden' }); } res.json(user);});
// POST /users - einen neuen Benutzer erstellenrouter.post('/', (req: Request, res: Response) => { const { name, email, age }: CreateUserDto = req.body; if (!name || !email || !age) { return res.status(400).js