Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
NotificationsYou must be signed in to change notification settings

curso-graphQL/1-Introduccion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

  1. Esquema GraphQL
  2. Scalar Types
  3. Object Types
  4. Enum Types
  5. Type Modifiers
  6. Interfaces
  7. Root Types
  8. Input Types
  9. Comentarios
  10. Merge, alias y fragment
  11. Query Variables
  12. Include y skip

1. Esquema GraphQL

  • Centro de cualquier implementación del servidor del GraphQL.
  • Sin el esquema no podemos contruir la API.
  • Es la parte más compleja de un proyecto GraphQL.
  • Nos alejamos de la filosofía de las API REST.

Definición y diseño

  • Definido por los tipos y directivas que admite.
  • Tipos de operación que admite:
    • Query.
    • Mutation.
    • Subscription.

Reglas de validación interna

  • Nombres únicos en tipos.
  • Nombres de directivas únicos.
  • Tipos y directivas no pueden comenzar con dos guiones bajos.

Convenciones

  • Nombres de campos en camelCase.
  • Nombres de tipos en PascalCase.
  • Enums:
    • Nombres de tipo en PascalCase.
    • Valores en ALL_CAPS.

2. Scalar Types

  • Datos primitivos que pueden almacenar un solo valor.
  • Con los tipos de objeto y tipo de raíz imprescindible.
  • Define la mayoría de las propiedades de las entidades.

Tipos predeterminados

  • Int: números enteros.
  • Float: números con decimales.
  • String: cadena de caracteres.
  • Boolean: Verdadero/falso.
  • ID: Identificador único (Int o String).

Escalares personalizados

  • Se define en el schema.graphql
  • Añadir en elresolver de tipos.
  • Implementar con elGraphQLScalarType.
  • Definir las propiedadesparseValue, serialize y parseLiteral.

3. Object types

  • Entidades con las que modelamos y estructuramos los servicios.
  • Objetos personalizados que definen cómo se verá en la API.
  • Se pueden definir tantos tipos como se desee.
  • Todos los tipos deben de tener campos.

Ejemplo

  • schema.graphql
typeProfesor {nombre:Stringapellidos:Stringexperiencia:Int}typeAsignatura {id:IDnombre:StringhorasLectivas:Intprofesor:Profesor}

4. Enum Types

  • Similar a un tipo scalar.
  • Útiles para trabajar con una lista de valores predefinidos.
  • Para crear un enum dentro del schema usar "enum" en lugar de "type".

Ejemplo

typeProfesor {nombre:Stringapellidos:Stringexperiencia:Intcurso:Cursos=NPM}enumCursos {    GRAPHQL_DE_CERO    NPM    COMPODOC}

5. Type Modifiers

  • Sirven para modificar el comportamiento cuando usamos un tipo.
  • !: Indica valor obligatorio.
  • []: Lista de valores con un elemento o más.

Ejemplo

typeProfesor {nombre:String!cursos1: [String] //Listacursos2: [String]! //Listanopuedesernullcursos3: [String!] //Listapuedesernull, pero sus valores no pueden ser nullcursos4: [String!]! //Nilalistanilosvalorespuedensernull}

6. Interfaces

  • Definiciones abstractas de atributos comunes.
  • Útiles para retornar obhetos de diferentes tipos.
  • Necesarias cuando buscamos acceder a cierto grupo de objetos que deben cumplir con las propiedades definidas por la interfaz.
  • Abstraemos grupos de tipos sobre ellos como una entidad.

Ejemplo

interfacePerfil {nombre:String!email:String!edad:Int!}typeAlumnoimplementsPerfil {nombre:String!email:String!edad:Int!curso:String}

7. Root Types

  • Son puntos de entrada.Sirven para comunicar al cliente con el servidor a través de ellos.
  • Tipos
    • Query: Consulta (en REST => GET).
    • Mutation: Modificación (en REST => POST, PATCH, PUT, DELETE).
    • Subscription: Suscripción. Interacción de info en tiempo real.

Query

  • Punto de entrada para realizar las consultas.
  • Similar a pedir un recurso en la API basada en REST.
  • Tipo de consulta desde cliente a servidor.
  • Escrito en lenguaje SDL para definir la consulta.
  • Es el único tipo de raiz que es obligatorio.
  • Es la única forma en que podemos obtener datos en GraphQL.

image1

image2

Mutation

  • Punto de entrada para realizar las operaciones de modificación.
  • Equivalente en REST a POST, PUT, PATCH Y DELETE.
  • Similar a una función.
  • Es la única forma en que podemos modificar datos en GraphQL.

image3

image4

Subscription

  • Punto de entrada para obtener información en tiempo real.
  • Utiliza la conexión mediante Web Sockets para obtener cambios.
  • Notifica al que se suscribe y mantiene interacción en tiempo real.

image5

image6


8. Input Types

  • Elementos que permiten pasar valores a Queries/Mutations.
  • Se pueden pasar valores simples (escalares) u objetos complejos.
  • Se comporta como los argumentos ante cualquier operación.

image7

image8


9. Comentarios

  • Podemos documentar nuestras APIs añadiendo comentarios en el schema.
  • GrapQL admite markdown dentro del schema para comentarios.
  • Tipos
    • Una línea: Comillas dobles.
    • Varias líneas: Triples comillas dobles.
  • Facilita la generación de SDL.

10. Merge, Alias y Fragment

Merge

Si realizamos dos consultas en paralelo sobre la misma instancia el resultado será una mezcla de ambas consultas.

image9

Alias

Para poder realizar dos consultas en paralelo sobre la misma instancia con distintos argumentos, es necesario el uso de alias.

image10

Fragment

Es posible separar partes comunes a varias consultas mediante fragments, de forma que no repitamos código.

image11


11. Query Variables

Es posible parametrizar argumentos utilizando query variables.

image12


12. Include y skip

Estas directivas permiten incluir o excluir campos en una consulta de forma parametrizada.

image13

image14

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp