Entonces, ahora si guardo esto, reinicio mi sandbox, actualizo mi página HTML y hago esta solicitud, ahora deberíamos tener solicitudes autenticadas. Y si cambiamos la consulta predeterminada de nuestra página para que sea un poco más interesante, como por ejemplo, podríamos consultar en lugar del propietario de la cuenta, que es solo el campo predeterminado que obtuvimos, el monto y el nombre, entonces cuando actualicemos esto y ejecutemos la consulta, obtendremos nuestras transacciones de vuelta.
Y ahora cualquier desarrollador que visite nuestro pequeño portal de desarrolladores en el futuro podrá iniciar sesión en su cuenta bancaria y obtener de inmediato sus transacciones con solo un clic de inicio de sesión y un clic para ejecutar la consulta. Ahora que nuestro gráfico es muy fácil de consultar, su popularidad va a despegar por completo. Lo sé, porque todos querrán saber cuánto les cuestan sus bagels. Y antes de que eso suceda, creo que deberíamos implementar algunas protecciones para que las personas sigan las reglas de uso de nuestro gráfico desde el primer día.
Y una de las reglas que teníamos en nuestras diapositivas era que queremos que cada solicitud que llegue a nuestro gráfico tenga los encabezados requeridos. Entonces, en este caso, digamos que queremos que cada solicitud tenga un encabezado de nombre de cliente de Apollo GraphQL requerido, porque luego podemos conectarlo a nuestra otra observabilidad. La forma en que vamos a lograr esto es ampliando la lógica en esta función de contexto. Entonces, si una solicitud no tiene nuestro encabezado de nombre de cliente de Apollo GraphQL, vamos a lanzar un nuevo error, todas las solicitudes deben provenir de un cliente identificado. Ahora, si ejecuto esta consulta, deberíamos obtener ese error de vuelta, lo cual estamos obteniendo, porque nuestra pequeña página web aquí aún no se está identificando como un cliente. Pero aquí, al igual que ampliamos nuestra solicitud usando esta función de manejo de solicitudes con un encabezado de autorización, también podemos agregar fácilmente un encabezado de nombre de cliente de Apollo GraphQL, y simplemente decir que este es nuestro explorador incrustado del portal. Ahora, si actualizo mi página aquí y ejecuto esta consulta, deberíamos estar listos para continuar. Y si echamos un vistazo a nuestras herramientas de observabilidad, ahora las solicitudes que provienen de nuestro explorador incrustado del portal se identificarán como tal.
Entonces, ahora que estamos haciendo cumplir que los encabezados requeridos estén presentes en nuestras solicitudes, otra regla que teníamos en las diapositivas era que todas las operaciones también deben tener un nombre adjunto. Esto es un poco más complicado porque a diferencia de los encabezados, que son solo una propiedad que se puede extraer directamente de la solicitud, los nombres de las operaciones están incrustados en el cuerpo de la operación y el cuerpo de la operación, cuando se envía a través de la red y llega por primera vez a nuestro servidor, está completamente en un formato de cadena. Y para saber si la operación realmente tiene un nombre, tenemos que hacer que nuestro servidor analice esa operación en un árbol de sintaxis abstracta y luego preguntar en ese punto, ¿tiene esta operación un nombre? Desafortunadamente, no podemos simplemente seguir ampliando la lógica que tenemos en el contexto aquí, pero afortunadamente podemos aprovechar la arquitectura de complementos de Apollo Server 3. Entonces, aquí abajo, si volvemos a la documentación del servidor Apollo, y vemos cómo funciona el ciclo de vida del complemento de solicitud, hay un conjunto completo de estados por los que pasa cada solicitud en el servidor Apollo, y en cualquier momento podríamos conectar a los estados y agregar algo de lógica mejorada. Y así, la primera etapa del ciclo de vida de la solicitud, donde la operación de solicitud se ha analizado completamente, es la etapa justo después de que la validación haya comenzado, por lo que esto sería resolvió la operación. Entonces, vamos a entrar aquí y conectarnos, vamos a agregar otro complemento, y luego conectarnos a la operación resuelta y su contexto. Y todo esto está dentro del ciclo de vida de la solicitud que comenzó. Entonces, aquí vamos a decir que si no hay un context.operation name, lanzamos un nuevo error, todas las operaciones deben tener un nombre. Y ahora, si ejecuto nuestra operación nuevamente, deberíamos estar bien porque esta operación tiene un nombre, pero si elimino ese nombre y ejecuto esta operación, deberíamos obtener un error. Así que estamos listos para continuar. Con solo un pequeño complemento en Apollo Server y algo de lógica en nuestra función de contexto, ahora estamos haciendo cumplir automáticamente que todos los clientes que usan nuestro gráfico sigan nuestras reglas. Y a medida que este gráfico despegue y más personas descubran que pueden usar nuestra API y aprender todo sobre sus transacciones de bagels, ahora sabremos exactamente quién está usando nuestra API y cómo, lo cual es bastante asombroso. Y lo último que quería cubrir en nuestra demostración es cómo hacer que este gráfico sea realmente accesible. Es una cosa darles a las personas que van a desarrollar en contra de nuestro gráfico un enlace a este sandbox que creamos y decirles, adelante, descúbrelo, buena suerte. Pero es otra cosa completamente diferente darle a alguien un enlace a una página de inicio que los reciba y les diga por dónde empezar. Y les mostré cómo hacer un gráfico público en el estudio anteriormente porque así es como incrustamos el explorador, pero no expliqué realmente
Comments