Tratarea Erorilor de Business în GraphQL: Erori ca Tipuri de Date Union în GraphQL

Ghid complet pentru modelarea erorilor în GraphQL: de ce array-ul 'errors' este doar pentru erori tehnice de sistem și cum se folosesc tipurile Union (RezultatSauEroare) pentru logica de business.

Sintaxă
union AutentificareRezultat = UtilizatorAutentificat | ParolaGresita | ContBlocat

Una dintre cele mai frecvente capcane în GraphQL este returnarea erorilor de logică a afacerii (ex: „Card de credit expirat” sau „Parolă incorectă”) în câmpul de nivel superior errors. Comunitatea de arhitectură GraphQL recomandă Erorile ca Date (Errors as Data) folosind tipuri compuse Union.

Definirea mutației cu răspuns de tip Union în GraphQL SDL
# 1. Definim tipurile concrete de erori posibile:
type ParolaGresita {
    mesaj: String!
    incercariRamase: Int!
}

type ContBlocat {
    mesaj: String!
    expiraLa: String!
}

type Utilizator {
    id: ID!
    email: String!
    tokenJWT: String!
}

# 2. Definim tipul union care cuprinde atât succesul, cât și erorile de business:
union AutentificareRezultat = Utilizator | ParolaGresita | ContBlocat

type Mutation {
    login(email: String!, parola: String!): AutentificareRezultat!
}
Interogarea clientului cu verificarea exhaustivă a tipului (Type Discriminator)
mutation AutentificareUtilizator($email: String!, $pass: String!) {
    login(email: $email, parola: $pass) {
        __typename
        ... on Utilizator {
            id
            tokenJWT
        }
        ... on ParolaGresita {
            mesaj
            incercariRamase
        }
        ... on ContBlocat {
            mesaj
            expiraLa
        }
    }
}
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Tratarea Erorilor de Business în GraphQL: Erori ca Tipuri de Date Union

Ai o nelămurire despre utilizarea comenzii Tratarea Erorilor de Business în GraphQL: Erori ca Tipuri de Date Union sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.