Tutoriale

Tutorial API REST pentru Începători: Ghid Complet 2025

6 min citire
62 vizualizari
Tutorial API REST pentru Începători: Ghid Complet 2025

Ce Este un API REST și De Ce Este Fundamental?

API (Application Programming Interface) este un set de reguli prin care aplicațiile comunică între ele. REST (Representational State Transfer) este un stil arhitectural pentru proiectarea API-urilor web, folosind protocolul HTTP. Când aplici pe telefon verifică vremea — frontend-ul face un request la un API REST meteorologic și primește date JSON pe care le afișează. Când comanzi pe Emag — frontend-ul comunică cu backend-ul prin API REST. API-urile REST sunt omniprezente în dezvoltarea web modernă.

Principiile REST — Ce Face un API „RESTful"?

Un API REST respectă 6 principii arhitecturale: Stateless — fiecare request conține toate informațiile necesare procesării (serverul nu păstrează stare între request-uri). Client-Server — separarea frontend (client) de backend (server) prin interfața API. Uniform Interface — resurse identificate prin URI-uri, manipulate prin reprezentări standard. Cacheable — răspunsurile pot fi cache-uite pentru performanță. Layered System — clientul nu știe dacă comunică direct cu serverul sau un proxy intermediar. Code on Demand (opțional) — serverul poate trimite cod executabil clientului.

HTTP Methods — Limbajul REST

REST folosește metodele HTTP pentru a exprima operațiunile CRUD (Create, Read, Update, Delete):

  • GET — citire/obținere resursă. Idempotent, fără body. Ex: GET /api/utilizatori → returnează lista utilizatorilor
  • POST — creare resursă nouă. Cu body JSON. Ex: POST /api/utilizatori → creează utilizator nou
  • PUT — actualizare completă resursă. Cu body complet. Ex: PUT /api/utilizatori/5 → înlocuiește utilizatorul cu id 5
  • PATCH — actualizare parțială resursă. Cu body parțial. Ex: PATCH /api/utilizatori/5 → actualizează doar câmpurile trimise
  • DELETE — ștergere resursă. Ex: DELETE /api/utilizatori/5 → șterge utilizatorul cu id 5

Pasul 1: Structura URL-urilor REST

URL-urile (endpoints) REST trebuie să fie intuitive și consistente. Convenții: substantive (nu verbe) în URL-uri (/utilizatori nu /getUtilizatori), plural pentru colecții (/utilizatori), ID pentru resurse individuale (/utilizatori/5), relații prin nesting (/utilizatori/5/comenzi). Versioning: /api/v1/utilizatori — permite evoluția API fără a strica clienții existenți. Query params pentru filtrare, sortare, paginare: /api/utilizatori?rol=admin&sort=data_creare&page=2&limit=20.

Pasul 2: Formatul JSON — Standardul REST

JSON (JavaScript Object Notation) este formatul standard de date pentru API-urile REST. Este ușor de citit de oameni și mașini. Structura: perechi cheie-valoare, array-uri, obiecte imbricate. Header-ul Content-Type: application/json trebuie inclus în request-urile cu body. Răspunsurile API includ și un status code HTTP care comunică rezultatul:

  • 200 OK
  • 201 Created
  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 500 Internal Server Error.

Pasul 3: Consumul unui API REST cu Fetch

JavaScript oferă API-ul Fetch nativ pentru request-uri HTTP. Un GET request simplu: fetch('https://api.exemplu.ro/utilizatori').then(response => response.json()).then(date => console.log(date)). Cu async/await: const response = await fetch(url); const date = await response.json(). Un POST request include method, headers și body:

  • Fetch(url
  • { method: 'POST'
  • Headers: { 'Content-Type': 'application/json' }
  • Body: JSON.stringify(dateNoi) }). Gestionarea erorilor: verifică response.ok înainte de parsarea JSON.

Pasul 4: Autentificarea în API-urile REST

API-urile nu sunt publice — necesită autentificare. Metode principale: API Keys — o cheie unică trimisă în header (X-API-KEY) sau query param. Simplu de implementat, ideal pentru servicii server-to-server. JWT (JSON Web Tokens) — token generat la login, trimis în Authorization: Bearer {token} header la fiecare request. Stateless și securizat. OAuth 2.0 — standard industrie pentru autorizare delegată (Login cu Google/Facebook). Complex dar robust pentru aplicații consumer.

Pasul 5: Construiește Primul Tău API REST cu Node.js

Express.js este cel mai popular framework Node.js pentru API-uri. Instalare: npm init -y && npm install express. Server de bază: const express = require('express'); const app = express(); app.use(express.json()). Endpoint simplu GET: app.get('/api/utilizatori', (req, res) => { res.json([{ id: 1, nume: 'Ion' }]); }). app.listen(3000). Testare: Postman sau Insomnia sunt instrumente grafice excelente pentru testarea manuală a API-urilor. thunder-client extensia VS Code este o alternativă rapidă.

Pasul 6: CORS — Comunicarea Cross-Origin

CORS (Cross-Origin Resource Sharing) este mecanismul de securitate al browser-elor care blochează request-urile din domenii diferite. Dacă frontend-ul tău la localhost:3000 face request la API-ul de la localhost:5000, browserul blochează implicit. Rezolvare în Express: npm install cors, const cors = require('cors'), app.use(cors()) permite toate originile (development) sau app.use(cors({ origin: 'https://site-frontend.ro' })) restricționează la un domeniu specific (producție).

Pasul 7: Documentarea API-ului

Un API nedocumentat este aproape inutilizabil. Standarde de documentare: OpenAPI/Swagger — specificație standard, permite generarea automată de documentație interactivă. Postman Collections — documentație + exemple de request, ușor de partajat. README.md bine scris cu exemple pentru proiecte mici. Swagger UI generează o pagină web interactivă din specificația OpenAPI — clienții pot testa endpointurile direct din documentație.

Ai nevoie de ajutor cu acest subiect?

Echipa CIF Design ofera consultanta si implementare profesionala. Cu experienta in dezvoltare web, automatizari, cloud, securitate si AI, putem transforma provocarile tehnice in solutii concrete pentru afacerea ta. Contacteaza-ne pentru o discutie gratuita.

Întrebări Frecvente despre Tutorial API REST

Care este diferența dintre REST și GraphQL?

REST are endpoint-uri fixe, fiecare returnând o structură predefinită. GraphQL are un singur endpoint și clientul specifică exact ce date vrea — eficient pentru mobile (mai puține date transferate) și aplicații complexe cu date relaționale. REST este mai simplu de implementat și mai potrivit pentru API-uri simple sau publice. GraphQL excelează în aplicații complexe cu date interconectate (social media, e-commerce).

REST sau RPC (gRPC) pentru microservicii?

gRPC (Google Remote Procedure Call) folosește Protocol Buffers în loc de JSON — semnificativ mai rapid și mai eficient în bandă. Ideal pentru comunicarea internă între microservicii unde performanța este critică. REST rămâne standard pentru API-urile publice datorită simplității și compatibilității universale cu orice client HTTP.

Cum versionez un API REST?

Trei strategii principale: URL versioning (/api/v1/, /api/v2/) — cel mai vizibil și simplu de înțeles. Header versioning (Accept: application/vnd.api.v2+json) — URL-urile rămân curate. Query param (?version=2) — mai rar folosit. URL versioning este cel mai frecvent și recomandat pentru API-urile publice — documentat clar, ușor de testat și de înțeles.

Cum gestionez erorile într-un API REST corect?

Folosește întotdeauna statusuri HTTP corecte (nu 200 pentru totul cu erori în body). Structură standard pentru erori: { error: { code: "INVALID_INPUT", message: "Email-ul este obligatoriu", field: "email" } }. Docuementează toate erorile posibile în documentația API. Nu expune detalii interne (stack trace, SQL errors) în producție — loghez intern, returnezi mesaj generic utilizatorilor.

Cum securizez un API REST?

Checklist de securitate: HTTPS obligatoriu (niciodată HTTP în producție), autentificare pentru toate endpointurile sensibile, rate limiting (prevenire spam/DDoS), validare și sanitizare a tuturor input-urilor, CORS configurat restrictiv în producție, logging audit pentru acțiuni sensibile, rotație regulată a cheilor API și token-urilor JWT cu expirare scurtă.

Etichete: Array

Distribuie articolul:

Comentarii

Se incarca comentariile...

Lasa un Comentariu

Comentariul va fi publicat dupa aprobare.