Despídete de tus esquemas de API con tRPC

Rate this content
Bookmark
Slides

¿Sabías que podemos reemplazar los esquemas de API con una biblioteca liviana y segura? Con tRPC, puedes reemplazar fácilmente GraphQL o REST con formas inferidas sin esquemas ni generación de código. En esta charla, entenderemos los beneficios de tRPC y cómo aplicarlo en una aplicación de NextJs. Si quieres reducir la complejidad de tu proyecto, no te puedes perder esta charla.

FAQ

TRPC es una biblioteca que permite la comunicación entre el cliente y el servidor sin necesidad de generar esquemas o tipos TypeScript cada vez que se realizan cambios. Es utilizada para simplificar la creación de aplicaciones, especialmente cuando se combinan con herramientas como Prisma y Next.js.

Las ventajas de TRPC incluyen la no necesidad de generar código para mutaciones o procedimientos, la seguridad de tipos por defecto y una mejor colaboración entre el front-end y el back-end al tener un lenguaje común para ambos.

Para implementar TRPC en una aplicación Next.js, se debe crear una carpeta TRPC dentro de la carpeta API del proyecto. Dentro de esta carpeta, se define un archivo que maneja los parámetros de la consulta y se expone un endpoint. Este endpoint se configura con TRPC y se definen los enrutadores necesarios para la aplicación.

Se recomienda combinar TRPC con Prisma, ya que esta combinación es muy eficaz para la gestión de bases de datos. Prisma facilita la creación y manejo de semillas en la base de datos, lo cual optimiza el proceso de desarrollo con TRPC.

Las desventajas de TRPC incluyen la necesidad de utilizar TypeScript tanto en el back-end como en el front-end, la necesidad de crear múltiples procedimientos para manejar diferentes versiones de una API y la complejidad que puede surgir al exponer la API al público, lo cual requiere el uso de TRPC-openAPI para la documentación.

TRPC es adecuado para la comunicación entre microservicios y para aplicaciones a gran escala mediante la creación de múltiples servicios que se comunican entre sí. Esto permite una arquitectura de microservicios eficiente y escalable.

No necesariamente. TRPC es muy útil en ciertos contextos, especialmente cuando se requiere una buena colaboración entre el front-end y el back-end. Sin embargo, para APIs públicas o en escenarios donde es necesario manejar múltiples clientes y personalizaciones detalladas, GraphQL o REST podrían ser más adecuados.

Giorgio Boa
Giorgio Boa
29 min
02 Dec, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla de hoy presenta TRPC, una biblioteca que elimina la necesidad de generación de código y proporciona seguridad de tipos y una mejor colaboración entre el front-end y el back-end. TRPC se demuestra en una aplicación de Next JS integrada con Prisma, lo que permite una implementación y una interacción sencillas con la base de datos. La biblioteca permite un uso sin problemas en el cliente, con renombramiento automático de procedimientos y la capacidad de llamar métodos sin generar tipos. La interacción cliente-servidor de TRPC se basa en solicitudes HTTP y permite una fácil depuración y trazado. La biblioteca también proporciona comprobación y validación de tipos en tiempo de ejecución utilizando Zod.

1. Introducción al esquema de API con trPC

Short description:

Hoy hablaremos sobre cómo deshacerte de tu esquema de API con trPC. Hay dos formas principales de comunicarse entre el servidor y el cliente: API abierta y GraphQL. La API abierta requiere aprender una nueva especificación, escribir JSON o YAML sensible a mayúsculas y minúsculas, y generar esquemas y tipos de TypeScript. Con GraphQL, necesitas aprender una nueva especificación, generar tipos de TypeScript y cargarlos en el cliente. Encontré una solución en TRPC, una biblioteca popular con más de 100,000 descargas semanales en npm y 60,000 estrellas en GitHub.

Y hoy hablaremos sobre cómo deshacerte de tu esquema de API con trPC. Así que quiero comenzar mi charla con la fatiga del esquema. Tenemos dos formas principales de comunicarnos entre el servidor y el cliente. Tenemos la API abierta y tenemos GraphQL. La API abierta es una especificación de API abierta, un lenguaje agnóstico final. Así que conoces los verbos HTTP como POST, GET, PATCH, DELETE, etcétera, etcétera. Y es un nuevo lenguaje para aprender.

Si quieres usar la API abierta, debes aprender una nueva especificación. Luego debes escribir JSON o YAML sensible a mayúsculas y minúsculas. Por cierto, YAML es horrible. Y debes generar tu esquema, tus tipos de TypeScript, cada vez que cambies algo en la documentación de la API abierta. De acuerdo. Veamos la parte de GraphQL. Con GraphQL, es un lenguaje de manipulación y consulta de datos de código abierto, nuevamente un lenguaje, y necesitas aprender cosas nuevas. Así que es un formato GraphQL. Y debes aprender la nueva especificación, por lo tanto, consultas, mutaciones, cosas así, etcétera y así sucesivamente. Y luego siempre debes generar tus tipos de TypeScript. Así que si cambias algo en el GraphQL, debes generar este tipo y lo cargas en el cliente. De acuerdo. Estoy luchando mucho con este tipo de cosas porque trabajo en una empresa de consultoría, Flowing, y encontré una solución en TRPC, y luego te mostraré cómo.

Mi nombre de usuario en LinkedIn y Twitter es Giorgio underscore boa. Si quieres tuitear sobre esta charla y etiquetarme y etiquetar también a la conferencia, lo apreciaría mucho.

Así que volvamos a TRPC. TRPC es una biblioteca bastante famosa. Más de 100,000 descargas semanales en npm y más de 60,000 estrellas en GitHub. Bastante popular. De acuerdo.

2. Implementando TRPC con Next JS y Prisma

Short description:

La biblioteca se basa en extraer la forma de un objeto utilizando TRPC. Se utiliza una aplicación Next JS para demostrar la implementación de TRPC y su integración con Prisma. Se define el enrutador de autores con diferentes procedimientos para obtener una lista de autores, agregar autores y eliminar autores. La API de Prisma se utiliza en la lógica empresarial para interactuar con la base de datos. En la carpeta del cliente, se define el archivo TRPC con el enrutador 'up' obtenido de la carpeta del servidor.

Toda la biblioteca se basa en este tipo que puedes ver en la pantalla. De acuerdo. Aquí tenemos un objeto. Mi objeto de trabajo con mi nombre y apellido. Y con el tipo, podemos extraer la forma de este objeto para obtener un tipo. De acuerdo. Y ahora mostraremos cómo funciona con TRPC.

Aquí tengo una aplicación Next JS, una simple, y decidí agregar TRPC desde cero para mostrarte lo fácil que es implementarlo. También creé una conexión con Prisma porque TRPC y Prisma son realmente una gran combinación. De acuerdo. Aquí tenemos nuestro esquema, el esquema de Prisma es nuestro modelo, modelo autor, y tenemos una semilla porque Prisma puede ayudarnos con la semilla en nuestra base de datos si está vacía. De acuerdo, tenemos una carpeta de origen y, como puedes ver, en las páginas tenemos la carpeta API. Dentro de la carpeta API, necesitamos crear una carpeta TRPC, y dentro de la carpeta TRPC, necesitamos definir un archivo como este con corchetes cuadrados, y luego para nosotros, obtener todos los parámetros de consulta y darnos la información. Así que necesitamos exponer este punto final. En este punto final, definimos desde TRPC next con esta API, definimos nuestro punto final. En este punto final, tenemos algunas configuraciones, pero lo más importante es este enrutador 'up'. En este enrutador 'up', tenemos la posibilidad de definir muchos enrutadores. Aquí solo tenemos el enrutador de autores y aquí tenemos el tipo del que mencioné antes. Entonces, a partir de este objeto, estamos extrayendo la forma del objeto y definiendo el enrutador 'up'. Este tipo es realmente importante para el cliente. Y ahora veremos cómo. Este es mi enrutador de autores y en este enrutador de autores, tengo algunos procedimientos diferentes. Entonces, defino obtener una lista de autores, puedo agregar autores y luego puedo eliminar uno, por supuesto. Esta es mi lógica empresarial y en la lógica empresarial, utilizo la API de Prisma. Por ejemplo, Prisma.author.findMany o, por ejemplo, si quiero agregar un nuevo autor, Prisma.author.findFirst y luego, si no está presente, crearé el registro.

De acuerdo, pero pasemos al cliente. Vimos antes que exportamos el tipo 'up router'. Entonces, estamos extrayendo la forma de este enrutador y ahora, en la carpeta del cliente, definimos el archivo TRPC, y en este archivo, hay algunas configuraciones, pero la parte más importante es esta, crear TRPC next con el genérico y aquí definimos el enrutador 'up'. El enrutador 'up' llega directamente desde la carpeta que vimos antes, 'server routers_app'.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Deja paso a los resolvers: un nuevo enfoque para la ejecución de GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
16 min
Deja paso a los resolvers: un nuevo enfoque para la ejecución de GraphQL
Aunque GraphQL es declarativo, los resolvers operan campo por campo, capa por capa, lo que a menudo resulta en un trabajo innecesario para la lógica de tu negocio, incluso cuando se utilizan técnicas como DataLoader. En esta charla, Benjie presentará su visión de una nueva estrategia de ejecución de GraphQL de propósito general cuyo enfoque holístico podría conducir a ganancias significativas en eficiencia y escalabilidad para todas las APIs de GraphQL.
Manejo de Cambios Significativos en GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
22 min
Manejo de Cambios Significativos en GraphQL
Top Content
Los requisitos cambian, pero los contratos de API son para siempre - ¡Ojalá! Un cambio significativo es algo que no es compatible con versiones anteriores. Esto significa que un consumidor de tu API no podría usar la nueva versión sin hacer un cambio de código ellos mismos. Evitamos cambios significativos si es posible, pero hay casos en los que son inevitables. Podría ser algo pequeño: como hacer un campo obligatorio opcional. O podría ser algo grande: como eliminar una consulta o una mutación. En esta charla revisaremos los tipos de cambios significativos que puedes encontrar y cómo lidiar con ellos de manera elegante.
Patrones avanzados para la gestión de API en aplicaciones React a gran escala
React Advanced Conference 2021React Advanced Conference 2021
20 min
Patrones avanzados para la gestión de API en aplicaciones React a gran escala
Top Content
En esta charla, descubrirás cómo gestionar operaciones asíncronas y cancelación de solicitudes implementando una capa de API mantenible y escalable y mejorándola con una lógica de cancelación desacoplada. También aprenderás cómo manejar diferentes estados de API de una manera limpia y flexible.
Manejo Seguro de Datos Dinámicos con TypeScript
Node Congress 2021Node Congress 2021
29 min
Manejo Seguro de Datos Dinámicos con TypeScript
Top Content
TypeScript hace JavaScript más seguro agregando definiciones de tipo estático. Las definiciones estáticas son maravillosas; evitan que los desarrolladores cometan errores triviales asegurando que cada asignación e invocación se haga correctamente. Una variable tipificada como una cadena no puede ser asignada un número, y una función que espera tres argumentos no puede ser llamada con solo dos. Estas definiciones solo existen en el momento de la compilación; el código que finalmente se ejecuta es solo JavaScript. ¿Pero qué pasa con la respuesta de una solicitud de API? En esta charla, Ethan Arrowood, Ingeniero de Software 2 @ Microsoft, cubrirá varias soluciones para tipificar de manera segura los datos dinámicos en las aplicaciones TypeScript. Esta charla presenta tecnologías populares como Fastify, JSON Schema, Node.js, y más!
Las APIs están evolucionando. Otra vez.
JSNation 2023JSNation 2023
28 min
Las APIs están evolucionando. Otra vez.
Como desarrolladores, nos apoyamos en los hombros de gigantes, y puede ser útil echar un vistazo al pasado para obtener una mejor perspectiva. En esta charla exploraremos brevemente la última década de desarrollo backend y patrones arquitectónicos.
A menudo hemos abandonado tecnologías en un intento de hacer que la experiencia del desarrollador sea sin fricciones. Sin embargo, a veces olvidamos lo que podemos aprender de los 'buenos viejos tiempos'.
¿Qué estás construyendo: un monolito, un sistema de microservicios o algo intermedio? Un cambio en cómo vemos las cosas puede ayudarnos a seguir avanzando.
Ref() vs. Reactive(): ¿Qué elegir usando la API de Composición de Vue 3?
Vue.js London 2023Vue.js London 2023
22 min
Ref() vs. Reactive(): ¿Qué elegir usando la API de Composición de Vue 3?
Existen dos enfoques para agregar un estado reactivo a los componentes de Vue utilizando la API de Composición. Como resultado, debes elegir si utilizar reactive(), ref(), o ambos. Te guiaré para tomar la mejor decisión.

Workshops on related topic

Construyendo APIs GraphQL sobre Ethereum con The Graph
GraphQL Galaxy 2021GraphQL Galaxy 2021
48 min
Construyendo APIs GraphQL sobre Ethereum con The Graph
WorkshopFree
Nader Dabit
Nader Dabit
The Graph es un protocolo de indexación para consultar redes como Ethereum, IPFS y otras blockchains. Cualquiera puede construir y publicar APIs abiertas, llamadas subgrafos, para hacer que los datos sean fácilmente accesibles.

En este masterclass aprenderás cómo construir un subgrafo que indexa datos de blockchain de NFT del contrato inteligente Foundation. Desplegaremos la API y aprenderemos cómo realizar consultas para recuperar datos utilizando diferentes tipos de patrones de acceso a datos, implementando filtros y ordenamiento.

Al final del masterclass, deberías entender cómo construir y desplegar APIs de alto rendimiento en The Graph para indexar datos de cualquier contrato inteligente desplegado en Ethereum.
Práctica con AG Grid's React Data Grid
React Summit 2022React Summit 2022
147 min
Práctica con AG Grid's React Data Grid
WorkshopFree
Sean Landsman
Sean Landsman
Comienza con AG Grid React Data Grid con un tutorial práctico del equipo principal que te guiará a través de los pasos para crear tu primera cuadrícula, incluyendo cómo configurar la cuadrícula con propiedades simples y componentes personalizados. La edición comunitaria de AG Grid es completamente gratuita para usar en aplicaciones comerciales, por lo que aprenderás una herramienta poderosa que puedes agregar de inmediato a tus proyectos. También descubrirás cómo cargar datos en la cuadrícula y diferentes formas de agregar representación personalizada a la cuadrícula. Al final del masterclass, habrás creado una cuadrícula de datos AG Grid React y la habrás personalizado con componentes funcionales de React.- Comenzando e instalando AG Grid- Configurando ordenamiento, filtrado, paginación- Cargando datos en la cuadrícula- La API de la cuadrícula- Usando hooks y componentes funcionales con AG Grid- Capacidades de la edición comunitaria gratuita de AG Grid- Personalizando la cuadrícula con componentes de React
Flujos de base de datos y desarrollo de API con Prisma
Node Congress 2022Node Congress 2022
98 min
Flujos de base de datos y desarrollo de API con Prisma
WorkshopFree
Nikolas Burk
Nikolas Burk
Prisma es un ORM de código abierto para Node.js y TypeScript. En esta masterclass, aprenderás los flujos de trabajo fundamentales de Prisma para modelar datos, realizar migraciones de base de datos y consultar la base de datos para leer y escribir datos. También aprenderás cómo Prisma se integra en tu stack de aplicaciones, construyendo una API REST y una API GraphQL desde cero utilizando SQLite como base de datos.
Tabla de contenidos:
- Configuración de Prisma, modelado de datos y migraciones- Explorando Prisma Client para consultar la base de datos- Construyendo rutas de API REST con Express- Construyendo una API GraphQL con Apollo Server
Mejores Prácticas y Patrones para Administrar Solicitudes de API y Estados
React Advanced Conference 2022React Advanced Conference 2022
206 min
Mejores Prácticas y Patrones para Administrar Solicitudes de API y Estados
Workshop
Thomas Findlay
Thomas Findlay
Con el surgimiento de frameworks, como React, Vue o Angular, la forma en que se construyen los sitios web ha cambiado a lo largo de los años. Las aplicaciones modernas pueden ser muy dinámicas y realizar múltiples solicitudes de API para poblar un sitio web con contenido actualizado o enviar nuevos datos a un servidor. Sin embargo, este cambio de paradigma ha introducido nuevos problemas con los que los desarrolladores deben lidiar. Cuando una solicitud de API está pendiente, tiene éxito o falla, el usuario debe recibir una retroalimentación significativa. Otros problemas pueden incluir el almacenamiento en caché de datos de API o la sincronización del estado del cliente con el servidor. Todos estos problemas requieren soluciones que deben ser codificadas, pero pueden volverse rápidamente inmanejables y dar como resultado una base de código difícil de ampliar y mantener. En este masterclass, cubriremos cómo manejar las solicitudes de API, los estados de API y la cancelación de solicitudes mediante la implementación de una Capa de API y combinándola con React-Query.
Prerrequisitos: Para aprovechar al máximo este masterclass, debes estar familiarizado con React y Hooks, como useState, useEffect, etc. Si deseas codificar junto con nosotros, asegúrate de tener Git, un editor de código, Node y npm instalados en tu máquina.
Construyendo APIs GraphQL con la biblioteca Neo4j GraphQL
GraphQL Galaxy 2021GraphQL Galaxy 2021
175 min
Construyendo APIs GraphQL con la biblioteca Neo4j GraphQL
WorkshopFree
William Lyon
William Lyon
Este masterclass explorará cómo construir APIs GraphQL respaldadas por Neo4j, una base de datos de grafos nativa. La biblioteca Neo4j GraphQL permite a los desarrolladores diseñar e implementar rápidamente APIs GraphQL completamente funcionales sin escribir ningún resolvedor. Este masterclass mostrará cómo utilizar la biblioteca Neo4j GraphQL para construir una API GraphQL en Node.js, incluyendo la adición de lógica personalizada y reglas de autorización.

Tabla de contenidos:
- Visión general de GraphQL y construcción de APIs GraphQL
- Construcción de APIs GraphQL en Node.js respaldadas por una base de datos de grafos nativa utilizando la biblioteca Neo4j GraphQL
- Adición de lógica personalizada a nuestra API GraphQL utilizando la directiva de esquema @cypher y resolvedores personalizados
- Adición de reglas de autenticación y autorización a nuestra API GraphQL