Sobes.tech
Junior

Ce sunt codurile de răspuns HTTP și în ce constă diferența dintre ele?

sobes.tech AI

Răspuns de la AI

Codurile de răspuns HTTP sunt numere formate din trei cifre, returnate de server ca răspuns la o solicitare a clientului. Ele indică stadiul procesării solicitării și oferă informații despre dacă aceasta a fost finalizată cu succes, dacă a apărut o eroare sau dacă este necesară o acțiune suplimentară.

Codurile sunt împărțite în cinci clase:

  • 1xx (Informaționale): Solicitarea a fost acceptată, procesarea continuă.
  • 2xx (Reușite): Solicitarea a fost primită, înțeleasă și procesată cu succes.
  • 3xx (Redirecționări): Clientul trebuie să efectueze acțiuni suplimentare pentru a finaliza solicitarea.
  • 4xx (Erori ale clientului): Solicitarea conține o eroare de sintaxă sau nu poate fi procesată.
  • 5xx (Erori ale serverului): Serverul nu a putut îndeplini solicitarea.

Diferențele dintre coduri țin de semantica lor, legată de diferitele etape ale procesării solicitării și rezultatele posibile.

Exemple de coduri frecvent utilizate:

Cod Descriere Clasă
200 OK Reușite
201 Creat Reușite
301 Mutat permanent Redirecționări
302 Găsit Redirecționări
400 Solicitare greșită Erori ale clientului
401 Neautorizat Erori ale clientului
403 Interzis Erori ale clientului
404 Nu găsit Erori ale clientului
500 Eroare internă a serverului Erori ale serverului
503 Serviciu indisponibil Erori ale serverului
// Exemplu de procesare a răspunsului HTTP în JavaScript
fetch('/api/data')
  .then(response => {
    if (response.ok) { // Verificare stare de succes (2xx)
      return response.json();
    } else {
      // Tratarea erorilor pe baza codului de stare
      console.error(`Eroare HTTP: ${response.status}`);
      if (response.status === 404) {
        console.error('Resursă negăsită.');
      }
      throw new Error(`Eroare HTTP: ${response.status}`);
    }
  })
  .then(data => {
    console.log('Date primite:', data);
  })
  .catch(error => {
    console.error('Eroare la încărcarea datelor:', error);
  });