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.

This talk has been presented at React Day Berlin 2022, check out the latest edition of this React Conference.

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.

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.

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.

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
GraphQL has made a huge impact in the way we build client applications, websites, and mobile apps. Despite the dominance of resolvers, the GraphQL specification does not mandate their use. Introducing Graphast, a new project that compiles GraphQL operations into execution and output plans, providing advanced optimizations. In GraphFast, instead of resolvers, we have plan resolvers that deal with future data. Graphfast plan resolvers are short and efficient, supporting all features of modern GraphQL.
Manejo de Cambios Significativos en GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
22 min
Manejo de Cambios Significativos en GraphQL
Top Content
This Talk discusses handling breaking changes in a GraphQL schema, including the use of the deprecated directive to tag fields that should no longer be used. It also covers the process of deploying GraphQL APIs and mobile apps, highlighting the challenges of mobile app release adoption. The Talk emphasizes the importance of making safe upgrades in mobile apps and provides strategies for detecting and handling breaking changes, such as using TypeScript and GraphQL Inspector. Overall, the Talk emphasizes the need to minimize user impact when introducing breaking changes in GraphQL schemas.
Patrones avanzados para la gestión de API en aplicaciones React a gran escala
React Advanced 2021React Advanced 2021
20 min
Patrones avanzados para la gestión de API en aplicaciones React a gran escala
Top Content
This Talk covers advanced patterns for API management in large-scale React applications. It introduces the concept of an API layer to manage API requests in a more organized and maintainable way. The benefits of using an API layer include improved maintainability, scalability, flexibility, and code reusability. The Talk also explores how to handle API states and statuses in React, and provides examples of canceling requests with Axios and React Query. Additionally, it explains how to use the API layer with React Query for simplified API management.
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
This Talk discusses the safe handling of dynamic data with TypeScript using JSON Schema and TypeBox. Fastify, a web framework, allows developers to validate incoming data using JSON schema, providing type safety and error handling. TypeBox is a powerful library that allows developers to define JSON schemas and derive static types in TypeScript. The combination of JSON schema, TypeBox, and Fastify provides powerful tools for type safety and validation of dynamic data.
Las APIs están evolucionando. Otra vez.
JSNation 2023JSNation 2023
28 min
Las APIs están evolucionando. Otra vez.
Matteo Collina
Luca Maraschi
2 authors
Technology is a spiral, with foundational ideas resurfacing. Java revolutionized enterprise applications. REST and JSON simplified building APIs and websites. Node.js enabled fast and custom development, leading to the microservices revolution. Platformatic aims to fill the gap in building, managing, and scaling microservices painlessly.
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?
This talk compares Rev and Reactive in Vue 3, exploring reactivity and their limitations. It discusses the use of watchers, identity issues, and migration strategies. The talk also highlights the benefits of using the Ref function for better reactivity and the recommended pattern of grouping Refs. Opinions from the Vue community are shared, with a majority preferring Ref over Reactive.

Workshops on related topic

Práctica con la Rejilla de Datos React de AG Grid
React Summit 2022React Summit 2022
147 min
Práctica con la Rejilla de Datos React de AG Grid
Top Content
WorkshopFree
Sean Landsman
Sean Landsman
Comienza con la Rejilla de Datos React de AG Grid con un tutorial práctico del equipo central que te llevará a través de los pasos para crear tu primera rejilla, incluyendo cómo configurar la rejilla 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 inmediatamente a tus proyectos. También descubrirás cómo cargar datos en la rejilla y diferentes formas de agregar renderizado personalizado a la rejilla. Al final de la masterclass, habrás creado una Rejilla de Datos React de AG Grid y personalizado con componentes React funcionales.- Comenzando e instalando AG Grid- Configurando ordenación, filtrado, paginación- Cargando datos en la rejilla- La API de la rejilla- Usando hooks y componentes funcionales con AG Grid- Capacidades de la edición comunitaria gratuita de AG Grid- Personalizando la rejilla con Componentes React
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.
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 2022React Advanced 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.