En aquest tema, explorarem els diferents tipus que GraphQL ofereix per definir l'esquema de la teva API. Els tipus són fonamentals per estructurar les dades i les operacions que es poden realitzar en una API GraphQL. A continuació, desglossarem els conceptes clau i proporcionarem exemples pràctics per ajudar-te a comprendre com utilitzar-los.
Tipus bàsics de GraphQL
- Tipus d'Objecte (
Object Types)
Object Types)Els tipus d'objecte són els més comuns en GraphQL. Defineixen una estructura de dades amb camps específics.
Exemple:
Explicació:
Userés un tipus d'objecte que té tres camps:id,nameiemail.ID!indica queidés un identificador únic i no pot ser nul.String!indica quenameiemailsón cadenes de text i no poden ser nul·les.
- Tipus d'Escalar (
Scalar Types)
Scalar Types)Els tipus d'escalar són els tipus de dades primitius en GraphQL. Els tipus d'escalar per defecte són:
Int: Enter de 32 bits.Float: Número de coma flotant de doble precisió.String: Cadena de text.Boolean: Valor booleà (trueofalse).ID: Identificador únic, sovint utilitzat per identificar recursos.
Exemple:
- Tipus d'Enumeració (
Enum Types)
Enum Types)Els tipus d'enumeració permeten definir un conjunt de valors possibles per un camp.
Exemple:
Explicació:
Roleés un tipus d'enumeració amb tres valors possibles:ADMIN,USERiGUEST.- El camp
roledel tipusUserha de ser un dels valors definits en l'enumeracióRole.
- Tipus de Llista (
List Types)
List Types)Els tipus de llista permeten definir camps que contenen una llista d'elements d'un tipus específic.
Exemple:
Explicació:
usersés un camp que retorna una llista deUser.[User!]!indica que la llista no pot ser nul·la i que cada element de la llista tampoc pot ser nul.
- Tipus d'Entrada (
Input Types)
Input Types)Els tipus d'entrada s'utilitzen per definir els paràmetres d'entrada de les mutacions.
Exemple:
input CreateUserInput {
name: String!
email: String!
role: Role!
}
type Mutation {
createUser(input: CreateUserInput!): User!
}Explicació:
CreateUserInputés un tipus d'entrada que defineix els paràmetres necessaris per crear un usuari.- La mutació
createUserpren un paràmetreinputde tipusCreateUserInputi retorna unUser.
Exercicis Pràctics
Exercici 1: Definir un tipus d'objecte
Defineix un tipus d'objecte Book amb els següents camps: id (ID), title (String), author (String) i publishedYear (Int).
Solució:
Exercici 2: Crear un tipus d'enumeració
Defineix un tipus d'enumeració Genre amb els valors FICTION, NONFICTION, SCIENCE, i HISTORY. Afegeix un camp genre al tipus Book que utilitzi aquest tipus d'enumeració.
Solució:
enum Genre {
FICTION
NONFICTION
SCIENCE
HISTORY
}
type Book {
id: ID!
title: String!
author: String!
publishedYear: Int!
genre: Genre!
}Exercici 3: Definir un tipus d'entrada
Defineix un tipus d'entrada CreateBookInput amb els camps title, author, publishedYear i genre. Afegeix una mutació createBook que prengui aquest tipus d'entrada i retorni un Book.
Solució:
input CreateBookInput {
title: String!
author: String!
publishedYear: Int!
genre: Genre!
}
type Mutation {
createBook(input: CreateBookInput!): Book!
}Resum
En aquest tema, hem après sobre els diferents tipus que GraphQL ofereix per definir l'esquema de la teva API, incloent-hi els tipus d'objecte, escalar, enumeració, llista i entrada. Aquests tipus són fonamentals per estructurar les dades i les operacions en una API GraphQL. Hem proporcionat exemples pràctics i exercicis per ajudar-te a comprendre com utilitzar aquests tipus en la teva pròpia API.
En el següent tema, explorarem els Escalars de GraphQL, on aprendrem més sobre els tipus de dades primitius i com crear escalar personalitzats.
Curs de GraphQL
Mòdul 1: Introducció a GraphQL
- Què és GraphQL?
- GraphQL vs REST
- Configuració d'un servidor GraphQL
- Conceptes bàsics de l'esquema de GraphQL
Mòdul 2: Conceptes bàsics
Mòdul 3: Disseny avançat d'esquemes
Mòdul 4: Treballant amb dades
- Connexió a una base de dades
- Estratègies de recuperació de dades
- Agrupació i emmagatzematge en memòria cau
- Gestió d'errors
Mòdul 5: Rendiment i seguretat
Mòdul 6: Eines i ecosistema
Mòdul 7: Proves i desplegament
- Proves unitàries de resolvers
- Proves d'integració
- Integració contínua
- Desplegament de servidors GraphQL
