Probando servidor GraphQL

Introducción #

Una vez se tenga el schema definido, el resolver, y el servidor configurado y conectado con MongoDB es momento de probarlo. En el artículo donde se explica como configurar el servidor se indica que para acceder al sandbox para probar el servidor hay que ir a la siguiente URL:

http://localhost:3000/api/graphql

El puerto 3000 es porque estamos usando NextJS para las pruebas.

Estado inicial MongoDB #

La foto inicial que tenemos en MongoDB es la siguiente:

mongodb estado inicial

No hay nada creado.

Realizando la primera consulta #

Desde Apollo studio te guarda lo último que has hecho y ejecutado pero creo que la primera te sale directamente en la operaciones de Query, por ello para no liarse lo mejor es desmarca todo y tener esta imagen inicial:

Operaciones iniciales

No voy a entrar mucho en detalle porque la página es bastante intuitiva pero para los avezados pueden escribir directamente las consultas en la Operations, pero yo uso el asistente. El asistente consiste en utilizar este icono icono añador para ir añadiendo campos o las operaciones que deseamos. En este caso vamos a darle al icono al lado de Query con lo que nos aparecerá lo siguiente:

Operacion query seleccionada

Ahora si damos al icono de añadir al lado de getAll se nos añadirá la opción:

Operacion query seleccionada2

Ahora solo falta añadir los campos de nuevo con el icono de añadir. Donde nos quedará lo siguiente:

Operacion query seleccionada3

El paso final es ejecutar la query: Ejecutar query

Operacion query seleccionada4

Inserción simple #

Vamos aprovechar que se pueden crear pestaña con este icono: Añadir pestaña para añadir la mutation newProduct:

Operacion mutation

Por defecto en los parámetros nos ha colocado el campo mueble porque en el schema lo hemos definido como obligatorio. En el panel de la izquierda tenemos dos secciones: Arguments y Fields. La primera son los parámetros de entrada del mutation, y el segundo son los campos de salida una vez el registro se haya insertado (es como lo que hemos hecho en la query). Si añadimos todos los campos necesarios tenemos lo siguiente:

Operacion mutation2

Ahora falta añadir los valores. Los valores se pueden añadir, o bien, en la pestaña de Variables, o bien, en la propia consulta. Lo vamos hacer de las dos maneras para verlas. La primera es través de las Variables

{
  "mueble": "mesa",
  "material": "madera"
}

Al pulsar el botón de ejecutar Boton ejecutar tendremos el siguiente resultado:

Operacion mutation3

Si lo hacemos directamente en la mutation lo que hago es quitar el contenido en la pestaña de Variables y poner lo siguiente en la propia consulta:

mutation Mutation($mueble: String!, $material: String) {
  newProduct(mueble: "silla", material: "plastico") {
    mueble
    material
  }
}

Al ejecutar la consulta obtendremos el siguiente resultado:

Operacion mutation4

Ahora, si volvemos a la pestaña donde tenemos la consulta y la ejecutamos veremos los dos registros insertados:

Operacion query seleccionada5

Inserción con subdocumentos #

Ahora vamos a realizar una inserción con subdocumentos. Es decir, vamos a llamar al método newCompleteProduct para ver su funcionamiento. Para la llamada vamos a usar las variables para el paso del parámetro. La llamada sería esta:

mutation con subdocuments

La verdad es que con el asistente es muy sencilla probar este tipo de servicios porque te va construyendo los niveles que quieres utilizar.