Graphql con Drupal | Instalación con Lando

Video de Youtube
URL de Video remoto

i no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

Graphql es un lenguaje de consultas para tu API, desarrollado por Facebook, cuyo propósito fundamental es añadir la mayor velocidad posible en las consultas realizadas a través de tus aplicaciones.

En este primer capítulo, aprenderemos a instalar un servidor local, utilizando Lando, en un entorno de Linux, con WSL2 dentro de Windows 11.

Curso Graphql con Drupal 9 | www.drupaladicto.com - Consultor especializado en drupal y symfony

Requisitos para el curso:

   1.- Tener instalado Lando en tu entorno Linux. Si no sabes cómo HAZ CLIC AQUI

 

Cómo configurar e instalar un servidor Graphql local con Lando

   El objetivo de este curso es que puedas instalar, configurar y comenzar a trabajar con un servidor de pruebas Graphql, en tu entorno local, por esta razón diseñaremos una configuración muy sencilla y fácil de entender. Ya que el verdadero propósito es que puedas entender su potencial al aplicarlo con Drupal 9.

   Paso 1 : Configuración proyecto Lando

     El primero de los pasos que necesitarás, es crear la carpeta donde se alojarán todos los archivos de tu proyecto, en nuestro caso, trabajaremos con un entorno Linux, combinando el Subsistema WSL2 de Windows; en este punto ya debes tener instalado y configurado Lando para continuar con el resto del curso.

     Si ya tienes todo listos, en la consola, nos colocaremos en la ubicación deseada, y a continaución, crearemos una carpeta con los permisos de escritura y lectura, para evitar fallos durante la instalación:

sudo mkdir graphql_project
sudo chmod -R 777 graphql_project

     A continuación nos moveremos dentro de la carpeta y añadiremos el archivo de configuración de Lando, para ello utilizaremo el comando touch de Linux.

sudo touch .lando.yml

     Ahora abriremos el archico utilizando el editor Nano o el que tengas disponible y pegaremos dentro el código que te mostraré más abajo.

sudo nano .lando.yml

 

name: graphql

proxy:
  appserver:
    - hostname: graphql.lndo.site
      port: 4000

services:
  appserver:
    type: node:17
    ssl: true
    sslExpose: false

tooling:
  npm:
    service: appserver
  node:
    service: appserver
  graphql:
    cmd: /app/node_modules/.bin/graphql_project
    service: appserver

 

     Guardaremos los cambios en el archivo de configuración de lando, y luego ejecutaremos el comando de arranque, para que podamos comprobar que todo funciona correctamente, además de poder ejecutar el resto de comandos que vamos a necesitar para la instalación.

lando start

Curso Graphql con Drupal 9 | www.drupaladicto.com - Consultor especializado en drupal y symfony

Paso 2: Comprobación e inicialización del servidor

     El siguiente paso, ahora que ya hemos comprobrado que Lando funciona correctamene, será saber las versiones de node y Npm que tenemos para el resto del proceso de instalación, por lo tanto, en la consola, ejecutaremos dichos comandos:

lando node -v

lando npm -v

     El resultado devuelto debería corresponder con la configuración que tenemos definida en nuestro archivo de configuración .lando.yml

Curso Graphql con Drupal 9 | www.drupaladicto.com - Consultor especializado en drupal y symfony

Paso 3 Inicialización del Servidor

     Si no hemos tenido ningún fallo en los pasos anteriores, podremos inicializar nuestro servidor, para que comience la descarga de los archivos de Node que necesitaremos, además de Package.json, package.lock, entre otros.

     Para ello, ejecutaremos el siguiente comando en nuestra consola:

lando npm init -y

     El resultado que deberíamos ver en nuestra pantalla, si todoo es correcto, será algo parecido a la siguiente imagen:

Curso Graphql con Drupal 9 | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ahora que ya hemos inicializado nuestro servidor, procederemos a instalar el Framework Apollo-server, que nos permitirá instalar más rápidamente nuestro servidor, si quieres más información sobre Apollo Server HAZ CLIC AQUÍ y Graphql, para ello, ejecutaremos en pantalla, el siguiente comando:

lando npm install apollo-server graphql

 

     Si quieres saber más sobre Apollo Server HAZ CLIC AQUI

 

Paso 4 : Modificación de Package.json

     Para poder utilzar mscript en nuestro servidor Graphq, añadiremos abriremos el archivo package.json, y añadiremos la línea:

"type": "module",

     Luego guardaremos el cambio y crearemos el archivo.

Curso Graphql con Drupal 9 | www.drupaladicto.com - Consultor especializado en drupal y symfony

Paso 5: Creación de nuestro archivo de configuración para Graphql

     La idea de este curso, es que podamos comenzar lo más pronto posible, a explorar y experimentar con Graphl, así que para ello, pondremos toda la información que necesitaremos, dentro de un archivo al que llamaremos index.js

sudo touch index.js

     Luego abriremos el archivo utilizando el editor, o el IDE que prefieras...

sudo nano index.js

   y dentro pegaremos las siguientes líneas:

import {ApolloServer, gql} from 'apollo-server'

const students = [
    {
        name: "Hugo",
        lastname: "Sierra",
        city: "Santo Domingo",
        phone_number: "666 555 444",
        id: "kkt2053-12365-88552"
    },
    {
        name: "Ana",
        lastname: "Dominguez",
        city: "La Romana",
        phone_number: "558 555 444",
        id: "5552053-1tt65-88552"
    },
    {
        name: "Carmen",
        lastname: "Ruiz",
        phone_number: "569 555 444",
        id: "ccg2053-12365-88552"
    }
]

     En esta primera parte del archivo, comenzamos con la importación de la librería o Framework Apollo, que nos permitirá configurar y arrancar un servidor de Graphql, muy fácilmente, además de ofrecernos una interfaz gráfica que nos hará sentir como en casa, desde el primer momento.

     En las líneas siguientes, hemos añadido un array de estudiantes, dentro de una constante, que nos servirá como base de datos y punto de partida en este primer encuentro con Graphql.

   Paso 6: Definición de datos y peticiones

     Una de las principales ventajas que ofrece el uso de Graphql, es que debemos definir los tipos de datos y las peticiones, previamente, para poder interactuar con la información que vayamos a necesitar.

     Para definir los datos y peticiones, dentro de nuestro servidor Graphql, definiremos una constante, con la siguiente estructura:

const typeDefs = gql`
     AQUI IRÁN TUS DATOS
`

Tipos de datos
     Puedes encontrar todos los tipos de datos disponibles para Graphl visitando la página oficial de Graphql, además, si queremos configurar un dato como requerido u oligatorio, utilzaremos el signo de puntuación admiración final: "!".

     Algunos tipos de datos que utilizaremos en este curso son:

String: Para definir cadenas de texto
ID: Para definir identificadores únicos
Int: (Integer) Para definir datos del tipo Integer
[Student]: Array de datos

Un ejemplo sera:

   type Student {
       name: String!
       lastname: String!
       city: String
       id = ID!
   }

Tipos de petición
   Como he mencionado anteriormente, además de definir el tipo de datos que utilizaremos en nuestras consultas con Graphql, necesitaremos definir los tipo de petición que realizaremos, el más común es type Query 

   Dentro de las peticiones, definiremos los método que utilizaremos para realizar las consultas, una vez definidos estos métodos, y sus parámetros en caso de necesitarlos, podremos añadir su estructura en otro tipo de componente, conocido como Resolvers.

Un ejemplod e petición será:

   type Query {
       numberOfStudents: Int!
       allStudents: [Student]!
   }

  Ahora que tenemos claro estos primeros conceptos, lo siguiente que añadiremos a nuestro archivo index.js, serán las definiciones de nuestros datos, con sus respectivos tipos y a continuación la definición de las primeras peticiones, que serán del tipo Query, así que copia las siguientes líneas y pégalas justo debajo del array de datos.

const typeDefs = gql`
    type Student {
        name: String!
        lastname: String!
        city: String
        id : ID!
    }
    
    type Query {
        numberOfStudents: Int!
        allStudents: [Student]!
    }
`

   Paso 7: Definición de los Resolvers (Métodos para las consultas)

     Ya que tenemos definidos los tipos de peticiones, que vamos a realizar, es el momento de decirle al servidor, desde qué fuente recibirá la información, además de la manera en que se procesará la misma, para ellos, utilizaremos los Resolvers, que serán los mismos métodos que hemos definido anteriormente, pero con la estructura correspondiente, para que podamos obtener los resultados esperados.

const resolvers = {
    Query: {
        numberOfStudents: () => students.length,
        allStudents: () => students
    }
}

     En el anterior código, estamos definiendo el método numberOfStudents, que nos devolverá el número total de estudiantes, guardados en la constante students, que definimos al principio. Luego en el método allStudents, recibiremos todos los datos que forman el array enla misma constante.

Paso 8: Creación de nuestro servidor Graphql

     Llegados a este punto, con todo lo necesario para que funcione correctamente nuestro servidor Graphql, sólo faltará construirlo y ponerlo en marcha.

     Para crear una instancia de nuestro servidor Grapql, gracias a que estamos utilzando Apollo-server, sólo necesitaremos añadir las siguientes líneas al archivo:

const server = new ApolloServer({
  
   })

     Un servidor Graphql, necesitará varios parámetros, para que puedan funcionar las consultas, es obligatorio que se respeten los nombres de dichos parámetros para que los datos de la consulta sean reconocidos por el servidor. 

const server = new ApolloServer({
    typeDefs,
    resolvers
})

 

Paso 9: Arranque del servidor

     Finalmente, ha llegado el momento más esperado, por fin veremos funcionando nuestro servidor y podremos comenzar de inmediato a realizar consultas e interactuar con su interfaz.

     Para arrancar el servidor, necesitaremos tres simples pasos adicionales al resto:

1.- Añadir las siguientes líneas al archivo index.js

server.listen().then(({url}) => {
    console.log (`Server ready en la ${url}`)
})

2.- Ejecutar, en la consola el comando de node, para que reconozca nuestra configuración, como estamos trabajando con lando:

lando node index.js

3.- Acceder a la url que hemos definido en el archivo de configuración de lando.

Curso Graphql con Drupal 9 | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Para acceder a la url, utilizaremos la que tiene el prefijo HTTPS, o de lo contrario nos devolverá error de conexión con el servidor Grapql. Si no tienes ninún fallo, deberías ver la página de bienvenida del servidor de Graphql.

Curso Graphql con Drupal 9 | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Para acceder a la consola y comenzar a trabajar con el servidor, haremos clic en el gran botón Morado que está en el mendio de la página.

Curso Graphql con Drupal 9 | www.drupaladicto.com - Consultor especializado en drupal y symfony

     A partir de este momento, podrás interactuar, a través de la consola o simplemente haciendo clic en los datos que haz configurado, en tu archivo index.js y que verás en la columna derecha de la pantalla.

     Al seleccionar los datos y hacer clic en el botón Query, deberías ver el resultado con tu consulta en la parte derecha de la pantalla.

Curso Graphql con Drupal 9 | www.drupaladicto.com - Consultor especializado en drupal y symfony