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
,name
iemail
.ID!
indica queid
és un identificador únic i no pot ser nul.String!
indica quename
iemail
só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à (true
ofalse
).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
,USER
iGUEST
.- El camp
role
del tipusUser
ha 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ó
createUser
pren un paràmetreinput
de tipusCreateUserInput
i 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