Erstellen einer REST-API mit TypeScript und Express

TypeScript und Express sind eine leistungsstarke Kombination zum Erstellen robuster REST-APIs. TypeScript bietet Typsicherheit, bessere Tools und ein verbessertes Entwicklungserlebnis, während Express ein minimalistisches Webframework für Node.js ist. Diese Anleitung führt Sie durch die Schritte zum Erstellen einer REST-API mit TypeScript und Express.

Einrichten des Projekts

Beginnen Sie, indem Sie ein neues Verzeichnis für das Projekt erstellen und eine Node.js-Anwendung initialisieren.

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

Installieren Sie als Nächstes die erforderlichen Abhängigkeiten für Express und TypeScript.

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

Erstellen Sie eine tsconfig.json-Datei, um TypeScript zu konfigurieren. Führen Sie den folgenden Befehl aus:

npx tsc --init

Passen Sie die Datei tsconfig.json den Anforderungen des Projekts an, aktivieren Sie Optionen wie "strict", "esModuleInterop" und legen Sie das Ausgabeverzeichnis auf "dist" fest.

Erstellen des Express-Servers

Erstellen Sie einen neuen Ordner mit dem Namen src und darin eine Datei mit dem Namen index.ts. Diese Datei dient als Einstiegspunkt für den Express-Server.

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

Um den Server auszuführen, verwenden Sie den folgenden Befehl:

npx ts-node src/index.ts

Definieren von API-Routen

Erstellen Sie in src einen neuen Ordner mit dem Namen routes. Erstellen Sie in diesem Ordner eine Datei mit dem Namen userRoutes.ts, um Routen für die Verarbeitung benutzerbezogener Anfragen zu definieren.

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;

Importieren Sie in der Datei index.ts die userRoutes und verwenden Sie sie in der Anwendung.

import userRoutes from './routes/userRoutes';

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

Erstellen einer Controller- und Service-Schicht

Organisieren Sie den Code, indem Sie separate Ebenen für Controller und Dienste erstellen. Erstellen Sie zwei neue Ordner in src: controllers und services.

Erstellen Sie im Ordner controllers eine Datei mit dem Namen 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);
};

Erstellen Sie im Ordner services eine Datei mit dem Namen 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;
};

Aktualisieren Sie userRoutes.ts, um diese Controller zu verwenden:

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

const router = Router();

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

export default router;

Testen der REST-API

Um die REST-API zu testen, verwenden Sie ein Tool wie Postman oder curl, um Anfragen an die Endpunkte zu senden. Starten Sie den Server und senden Sie eine GET-Anfrage an /api/users und eine POST-Anfrage an /api/users mit einer JSON-Nutzlast.

Abschluss

Wenn Sie diese Schritte befolgen, können Sie mit TypeScript und Express eine REST-API erstellen. TypeScript sorgt für Typsicherheit und eine bessere Entwicklungserfahrung, während Express ein einfaches und leistungsstarkes Framework zum Erstellen von RESTful-Diensten bietet. Dieses Setup kann durch Hinzufügen von Validierung, Fehlerbehandlung und komplexerer Geschäftslogik noch weiter verbessert werden.