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

  1. Tipus d'Objecte (Object Types)

Els tipus d'objecte són els més comuns en GraphQL. Defineixen una estructura de dades amb camps específics.

Exemple:

type User {
  id: ID!
  name: String!
  email: String!
}

Explicació:

  • User és un tipus d'objecte que té tres camps: id, name i email.
  • ID! indica que id és un identificador únic i no pot ser nul.
  • String! indica que name i email són cadenes de text i no poden ser nul·les.

  1. Tipus d'Escalar (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 o false).
  • ID: Identificador únic, sovint utilitzat per identificar recursos.

Exemple:

type Product {
  id: ID!
  name: String!
  price: Float!
  inStock: Boolean!
}

  1. Tipus d'Enumeració (Enum Types)

Els tipus d'enumeració permeten definir un conjunt de valors possibles per un camp.

Exemple:

enum Role {
  ADMIN
  USER
  GUEST
}

type User {
  id: ID!
  name: String!
  role: Role!
}

Explicació:

  • Role és un tipus d'enumeració amb tres valors possibles: ADMIN, USER i GUEST.
  • El camp role del tipus User ha de ser un dels valors definits en l'enumeració Role.

  1. Tipus de Llista (List Types)

Els tipus de llista permeten definir camps que contenen una llista d'elements d'un tipus específic.

Exemple:

type Query {
  users: [User!]!
}

Explicació:

  • users és un camp que retorna una llista de User.
  • [User!]! indica que la llista no pot ser nul·la i que cada element de la llista tampoc pot ser nul.

  1. Tipus d'Entrada (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àmetre input de tipus CreateUserInput i retorna un User.

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ó:

type Book {
  id: ID!
  title: String!
  author: String!
  publishedYear: Int!
}

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.

© Copyright 2024. Tots els drets reservats