Construirea unui API REST cu TypeScript și Express
TypeScript și Express sunt o combinație puternică pentru construirea de API-uri REST robuste. TypeScript oferă siguranța textului, instrumente mai bune și experiență de dezvoltare îmbunătățită, în timp ce Express este un cadru web minimalist pentru Node.js. Acest ghid va parcurge pașii pentru a construi un API REST folosind TypeScript și Express.
Configurarea Proiectului
Începeți prin crearea unui director nou pentru proiect și inițializarea unei aplicații Node.js.
mkdir typescript-express-api
cd typescript-express-api
npm init -y
Apoi, instalați dependențele necesare pentru Express și TypeScript.
npm install express
npm install --save-dev typescript ts-node @types/node @types/express
Creați un fișier tsconfig.json
pentru a configura TypeScript. Rulați următoarea comandă:
npx tsc --init
Modificați fișierul tsconfig.json
pentru a se potrivi nevoilor proiectului, activând opțiuni precum "strict"
, "esModuleInterop"
și setând directorul de ieșire la "dist"
.
Crearea serverului Express
Creați un folder nou numit src
și în interiorul acestuia, creați un fișier numit index.ts
. Acest fișier va servi drept punct de intrare pentru serverul 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}`);
});
Pentru a rula serverul, utilizați următoarea comandă:
npx ts-node src/index.ts
Definirea rutelor API
Creați un folder nou în src
numit routes
. În acest folder, creați un fișier numit userRoutes.ts
pentru a defini rutele pentru gestionarea cererilor legate de utilizator.
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;
În fișierul index.ts
, importați userRoutes
și utilizați-le în aplicație.
import userRoutes from './routes/userRoutes';
app.use('/api', userRoutes);
Crearea unui controler și a unui strat de servicii
Organizați codul creând straturi separate pentru controlere și servicii. Creați două foldere noi în src
: controllers
și services
.
În folderul controllers
, creați un fișier numit 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);
};
În folderul services
, creați un fișier numit 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;
};
Actualizați userRoutes.ts
pentru a utiliza aceste controlere:
import { Router } from 'express';
import { getUsers, addUser } from '../controllers/userController';
const router = Router();
router.get('/users', getUsers);
router.post('/users', addUser);
export default router;
Testarea API-ului REST
Pentru a testa API-ul REST, utilizați un instrument precum Postman sau curl pentru a trimite solicitări către punctele finale. Porniți serverul și faceți o solicitare GET către /api/users
și o solicitare POST către /api/users
cu o sarcină utilă JSON.
Concluzie
Urmând acești pași, un API REST poate fi creat folosind TypeScript și Express. TypeScript adaugă siguranță tipului și o experiență de dezvoltare mai bună, în timp ce Express oferă un cadru simplu și puternic pentru construirea de servicii RESTful. Această configurație poate fi îmbunătățită și mai mult prin adăugarea de validare, gestionarea erorilor și o logică de afaceri mai complexă.