Sări la conținutul principal

Gestionare erori

API-ul Qarta utilizează coduri de stare HTTP standard și răspunsuri de eroare pentru a vă ajuta să depanați problemele.

Coduri de stare HTTP

CodSens
200OK - Cererea a reușit
400Cerere proastă - Parametri de cerere nevalizi sau corp de cerere malformat
401Neautorizat - Cheie API lipsă sau invalidă
403Interzis - Permisiuni insuficiente pentru resursa cerută
500Eroare server internă - Eroare pe partea serverului

Format răspuns eroare

În funcție de punct final, răspunsurile de eroare urmează unul dintre aceste formate:

Format 1: Răspuns cu mesaj simplu

{
"message": "Error description"
}

Format 2: Răspuns cu mesaj imbricat

{
"errorMessage": {
"message": "Error description"
}
}

Care puncte finale utilizează care format?

Categoria de punct finalFormat de eroare
Puncte finale de portofoliu (acumulare, intrări, puncte, aprovizionare)Imbricat: { "errorMessage": { "message": "..." } }
Puncte finale de raportare de riscuri (risc punct, risc punct-buffer)Simplu: { "message": "..." }
Puncte finale de locație (geocodare, completare automată, geocodare inversă)Simplu: { "message": "..." }
Puncte finale de îmbogățire (unic, lot)Simplu: { "message": "..." }
Puncte finale WMS / WFSRăspunsuri de eroare OGC XML sau JSON simplu { "message": "..." }
Gestionare ambelor formate

Pentru a extrage în siguranță mesajul de eroare din orice punct final Qarta, verificați ambele formate:

function getErrorMessage(body) {
return body?.errorMessage?.message || body?.message || 'Unknown error';
}

Scenarii comune de eroare

400 Cerere proastă

Cauză: Parametri de cerere nevalizi sau corp de cerere malformat

Exemplu:

{
"errorMessage": {
"message": "Invalid parameter format"
}
}

Soluții:

  • Verificați că toți parametrii necesari sunt furnizați
  • Verificați că tipurile de parametri se potrivesc cu specificația API
  • Asigurați-vă că corpul cererii este JSON valid
  • Validați că expresiile de filtru și interogările spațiale sunt formatate corect

401 Neautorizat

Cauză: Cheie API lipsă sau invalidă

Soluții:

  • Verificați că cheia API este corectă
  • Asigurați-vă că antetul Authorization este inclus cu cheia API
  • Verificați că cheia API nu a fost revocată în panoul dvs
  • Confirmați că cheia API are acces la resursa cerută

403 Interzis

Cauză: Cheia API nu are permisiune să acceseze resursa cerută

Exemple de scenarii:

  • Accesarea unui portofoliu pentru care nu aveți permisiune
  • Încercarea interogării surselor de date indisponibile pentru contul dvs

Soluții:

  • Verificați permisiunile contului dvs în panoul de control
  • Verificați că cheia API are acces la portofoliul sau sursa de date
  • Contactați suportul dacă credeți că ar trebui să aveți acces

500 Eroare internă a serverului

Cauză: Eroare pe partea serverului

Soluții:

  • Reîncercați cererea după o scurtă pauză
  • Implementați backoff exponențial pentru reîncercări automate
  • Dacă eroarea persistă, contactați suportul cu detalii despre cerere

Strategie de reîncercare

Pentru erorile tranzitorii (coduri de stare 5xx), implementați backoff exponențial:

async function retryRequest(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fetch(url, options);
if (response.ok) {
return response;
}
if (response.status >= 500 && i < maxRetries - 1) {
// Retry on server errors
const delay = Math.pow(2, i) * 1000; // 1s, 2s, 4s
await new Promise(resolve => setTimeout(resolve, delay));
continue;
}
return response;
} catch (error) {
if (i === maxRetries - 1) throw error;
const delay = Math.pow(2, i) * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
}
}
}

Sfaturi de depanare

  • Verificați mai întâi codul de stare HTTP pentru a determina tipul de eroare
  • Revizuiți mesajul de eroare pentru detalii specifice despre ce s-a întâmplat
  • Verificați cheia API și parametrii cererii
  • Pentru erori 500, reîncercați după o scurtă pauză
  • Contactați suportul dacă întâmpinați erori persistente