Budowanie interfejsu API REST z użyciem TypeScript i Express

TypeScript i Express to potężne połączenie do tworzenia solidnych interfejsów API REST. TypeScript zapewnia bezpieczeństwo typów, lepsze narzędzia i ulepszone środowisko programistyczne, podczas gdy Express to minimalistyczny framework sieciowy dla Node.js. Ten przewodnik przeprowadzi Cię przez kroki tworzenia interfejsu API REST przy użyciu TypeScript i Express.

Konfigurowanie projektu

Zacznij od utworzenia nowego katalogu dla projektu i zainicjowania aplikacji Node.js.

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

Następnie zainstaluj wymagane zależności dla Express i TypeScript.

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

Utwórz plik tsconfig.json, aby skonfigurować TypeScript. Uruchom następujące polecenie:

npx tsc --init

Zmodyfikuj plik tsconfig.json tak, aby odpowiadał potrzebom projektu, włączając opcje takie jak "strict", "esModuleInterop" i ustawiając katalog wyjściowy na "dist".

Tworzenie serwera Express

Utwórz nowy folder o nazwie src i w nim utwórz plik o nazwie index.ts. Ten plik będzie służył jako punkt wejścia dla serwera Express.

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

Aby uruchomić serwer, użyj następującego polecenia:

npx ts-node src/index.ts

Definiowanie tras API

Utwórz nowy folder wewnątrz src o nazwie routes. W tym folderze utwórz plik o nazwie userRoutes.ts, aby zdefiniować trasy do obsługi żądań związanych z użytkownikiem.

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;

W pliku index.ts zaimportuj userRoutes i użyj ich w aplikacji.

import userRoutes from './routes/userRoutes';

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

Tworzenie kontrolera i warstwy usług

Zorganizuj kod, tworząc oddzielne warstwy dla kontrolerów i usług. Utwórz dwa nowe foldery wewnątrz src: controllers i services.

W folderze controllers utwórz plik o nazwie 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);
};

W folderze services utwórz plik o nazwie 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;
};

Zaktualizuj userRoutes.ts, aby używać następujących kontrolerów:

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

const router = Router();

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

export default router;

Testowanie interfejsu API REST

Aby przetestować REST API, użyj narzędzia takiego jak Postman lub curl, aby wysłać żądania do punktów końcowych. Uruchom serwer i wyślij żądanie GET do /api/users oraz żądanie POST do /api/users z ładunkiem JSON.

Wniosek

Postępując zgodnie z tymi krokami, można utworzyć REST API przy użyciu TypeScript i Express. TypeScript dodaje bezpieczeństwo typu i lepsze środowisko programistyczne, podczas gdy Express zapewnia proste i wydajne ramy do tworzenia usług RESTful. Tę konfigurację można dodatkowo ulepszyć, dodając walidację, obsługę błędów i bardziej złożoną logikę biznesową.