TypeStack/routing-controllers für TypeScript: Komplettguide mit Beispielen
1. Was ist das und wozu braucht man es?
TypeStack/routing-controllers ist eine leistungsstarke Bibliothek für TypeScript, mit der Sie serverseitige Node.js-Anwendungen mithilfe von Decorators erstellen können. Sie bietet eine deklarative Möglichkeit, Routen, Middleware, Validierung und Daten-Serialisierung zu definieren. Anstatt für jede HTTP-Anfrage manuell Handler zu schreiben und diese mit Express oder Koa zu verknüpfen, annotieren Sie einfach Klassen und Methoden mit Decorators – die Bibliothek generiert automatisch die gesamte benötigte Infrastruktur.
Wozu das Ganze? In der modernen TypeScript-Webentwicklung treten oft Probleme mit Code-Duplizierung und der Wartbarkeit großer Projekte auf. routing-controllers löst dieses Problem, indem es eine saubere, modulare Architektur auf Basis von Klassen und Decorators bietet. Das macht den Code lesbarer, testbarer und skalierbarer. Sie können Middleware einfach wiederverwenden, eingehende Daten mit class-validator validieren und automatisch OpenAPI (Swagger)-Dokumentation generieren.
Die Bibliothek integriert sich nahtlos in gängige Frameworks wie Express und Koa und ist Teil des TypeStack-Ökosystems, zu dem auch class-validator, class-transformer und typedi gehören. Damit können Sie vollwertige Backend-Anwendungen mit Dependency Injection, Validierung und Datentransformation "out of the box" erstellen.
2. Installation
Führen Sie die folgenden Befehle im Terminal Ihres Projekts aus, um die Bibliothek und ihre Abhängigkeiten zu installieren:
npm install routing-controllers reflect-metadata
Außerdem benötigen Sie eines der unterstützten HTTP-Frameworks. Empfohlen werden Express oder Koa:
npm install express
npm install @types/express --save-dev
Oder für Koa:
npm install koa
npm install @types/koa --save-dev
Vergessen Sie nicht, experimentelle Decorators in Ihrer tsconfig.json zu aktivieren:
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"target": "ES6",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./src",
"strict": true
}
}
3. Schnellstart – Minimales funktionsfähiges Beispiel
Erstellen Sie eine Datei app.ts mit folgendem Inhalt:
import 'reflect-metadata';
import { createExpressServer, Get, Controller, Res } from 'routing-controllers';
import { Response } from 'express';
@Controller()
class UserController {
@Get('/users')
getAll(@Res() response: Response) {
return response.json([{ id: 1, name: 'John Doe' }]);
}
}
const app = createExpressServer({
controllers: [UserController],
});
app.listen(3000, () => {
console.log('Server läuft auf http://localhost:3000');
});
Starten Sie den Server mit npx ts-node app.ts und öffnen Sie http://localhost:3000/users im Browser. Sie sehen eine JSON-Antwort mit einem Array von Benutzern.
4. Wichtige Methoden/Funktionen/Klassen
4.1 @Controller
Signatur: @Controller(basePath?: string)
Funktion: Ein Klassen-Decorator, der eine Klasse als Controller markiert. Akzeptiert einen optionalen Basispfad, der allen Routen innerhalb der Klasse vorangestellt wird.
Arbeitsbeispiel:
@Controller('/api')
class ApiController {
@Get('/status')
getStatus() {
return { status: 'OK' };
}
}
// Route: GET /api/status
4.2 @Get, @Post, @Put, @Delete, @Patch
Signatur:
Auch in der Bibliothek
Konfiguration von Java-Anwendungen: Überblick über Bibliotheken und Tools
Arbeiten mit Daten in Go (Golang): Überblick über Bibliotheken und Pakete
Java Aufgabenplaner: Quartz Scheduler – vollständiger Leitfaden
Testen in Swift (iOS/macOS): Frameworks und Werkzeuge