Get rid of your API schemas with tRPC

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Slides
Rate this content

¿Sabes que podemos reemplazar los esquemas de API con una biblioteca ligera y segura en cuanto a tipos? Con tRPC puedes reemplazar fácilmente GraphQL o REST con formas inferidas sin esquemas ni generación de código. En esta charla entenderemos el beneficio de tRPC y cómo aplicarlo en una aplicación NextJs. Si quieres reducir la complejidad de tu proyecto, no puedes perderte 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 mejor colaboración entre el front-end y el back-end. TRPC se demuestra en una aplicación Next JS integrada con Prisma, lo que permite una fácil implementación e interacción con la base de datos. La biblioteca permite un uso sin problemas en el cliente, con renombrado 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 rastreo. La biblioteca también proporciona verificación de tipos en tiempo de ejecución y validación usando Zod.

1. Introducción al esquema API con trPC

Short description:

Hoy estamos hablando sobre cómo deshacerse de su esquema API con trPC. Hay dos formas principales de comunicarse desde su servidor y cliente: Open API y GraphQL. Open API requiere aprender una nueva especificación, escribir JSON o YAML sensible a mayúsculas y minúsculas, y generar tipos de esquema y TypeScript. Con GraphQL, necesita aprender una nueva especificación, generar tipos de TypeScript y volcarlos 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.

Estoy muy feliz de estar aquí. Y hoy estamos hablando sobre cómo deshacerse de su esquema API con trPC. Así que quiero comenzar mi charla con las fatigas del esquema. Entonces tenemos dos formas principales de comunicarse desde su servidor y cliente. Tenemos Open API, y tenemos GraphQL. Entonces Open API es la especificación de Open API, la interfaz agnóstica de lenguaje final. Entonces conoces los verbos HTTP como POST, GET, PATCH, DELETE, etcétera, etcétera. Y es un nuevo lenguaje para conocer.

Entonces, si quieres usar Open API, tienes que aprender una nueva especificación. Luego necesitas escribir JSON o YAML sensible a mayúsculas y minúsculas. Por cierto, YAML apesta. Y tienes que generar tu esquema, tus tipos de TypeScript, cada vez que cambias algo en la documentación de Open API.

Bien. Veamos la parte de GraphQL. Con GraphQL, es una consulta de datos de código abierto, lenguaje de manipulación, nuevamente lenguaje, y necesitas aprender cosas nuevas. Entonces es un formato de GraphQL. Y necesitas aprender la nueva especificación, así que consulta, mutaciones, cosas así, y así sucesivamente. Y luego siempre tienes que generar tus tipos de TypeScript.

Entonces, si cambias algo en el GraphQL, necesitas generar este tipo y lo vuelcas en el cliente.

Bien. Estoy luchando mucho con este tipo de cosas porque estoy trabajando en una empresa de consultoría, Flowing, y encontré una solución en TRPC, y luego te mostraré cómo.

Mi usuario en LinkedIn y Twitter es Giorgio underscore boa. Si quieres tuitear sobre esta charla y etiquetarme y también etiquetar la conferencia, lo agradecerí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. Así que bastante popular. Bien.

2. Implementing TRPC with Next JS and Prisma

Short description:

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

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

Aquí tengo una aplicación de Next JS, una simple, y decidí agregar desde cero TRPC para mostrarte lo fácil que es implementarlo. Así que también creé una conexión con Prisma porque TRPC y Prisma son realmente una gran combinación. Bien. Así que aquí tenemos nuestro esquema, el esquema de Prisma es nuestro modelo, modelo de autor, bien, y tenemos una semilla porque Prisma puede ayudarnos con la semilla en nuestra base de datos si está vacía. Bien, tenemos una carpeta de origen, y como puedes decir, sabes, en páginas tenemos la carpeta slash 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, y Next para nosotros toma todos los parámetros de consulta y nos da la información. Así que necesitamos exponer este endpoint. En este endpoint definimos desde tRPC next con esta API, definimos nuestro endpoint. En este endpoint tenemos algunas configuraciones, pero lo más importante es este up-router. En este up-router tenemos la posibilidad de definir muchos enrutadores. Aquí solo tenemos el enrutador de autor y aquí tenemos el tipo de que mencioné antes. Así que, de este objeto estamos extrayendo la forma del objeto y definiendo el up-router. Este tipo es realmente importante para el cliente. Y ahora veremos cómo. Este es mi enrutador de autor y en este enrutador de autor, tengo algunos procedimientos diferentes. Así que, defino para obtener una lista de autores, puedo agregar autores y luego puedo eliminar uno, por supuesto. Así que, esta es mi lógica de negocio y en la lógica de negocio, pongo la API de Prisma. Así que, Prisma autor punto encontrar muchos o, por ejemplo, si quiero agregar un nuevo autor, Prisma autor encontrar primero y luego si no está presente, crearé el registro.

Bien, pero saltemos al cliente. Vemos antes que exportamos el tipo up-router. Así que, 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 up-router. El up-router llega directamente de la carpeta que vimos antes. Así que, enrutadores del servidor guion bajo app.

3. Uso de TRPC en la Parte del Cliente

Short description:

De esta manera, somos capaces de usar TRPC en la parte del cliente. Podemos llamar a los métodos de añadir, eliminar y listar sin generar ningún tipo. Gestionamos el manejo de la eliminación y el guardado, y cada vez que guardo y elimino, invalido la lista para refrescarla. Una cosa genial es que TypeScript renombra automáticamente los procedimientos cuando se cambian. Interactuar con TRPC desde la parte del servidor y del cliente es un gran beneficio. Ahora vamos a profundizar en la biblioteca y ver cómo funciona internamente. Definimos los métodos en el cliente TRPC, y la consulta es un get mientras que la mutación es un post.

De esta manera, somos capaces de usar TRPC en la parte del cliente. Entonces, aquí está nuestro índice slash, vale, la propia página de nuestra aplicación. Podemos usar TRPC así, TRPC punto autor punto lista, pero si elimino esta lista y yo presiono control espacio, como puedes ver con TypeScript, somos capaces de saber que puedo llamar al añadir, eliminar, y listar. Y esto es genial porque no generamos ningún tipo de tipos para hacer eso, es todo de serie.

Vale, entonces, vale, genial, como puedes ver aquí, estamos buscando a los autores. Luego gestionamos el manejo de la eliminación y el guardado, y cada vez que guardo y elimino, yo invalido la lista para refrescar la lista. Así que podemos iniciar nuestra aplicación. Aquí hay algunos códigos de Prisma. Vale. Y si vamos aquí, tenemos esta lista, y con el botón de guardar guardamos un nuevo autor, y luego podemos eliminarlos. Genial. Una cosa realmente genial es que si vas a los enrutadores, en el enrutador del autor, genial, y decidimos cambiar el nombre del procedimiento, así que cambiemos este, podemos renombrar el Añadir a nuevo, y boom, en el índice aquí, puedes ver que TypeScript lo renombró por mí, así que es realmente genial. Pero si decidimos, no hacerlo con el símbolo renombrado, sino hacerlo manualmente, así que elimino aquí cabeza, vale, si lo hacemos manualmente, como este, tan pronto como me muevo al índice, podemos ver que TypeScript me notifica que algo cambió internamente. Así que es un gran beneficio interactuar desde tu servidor y la parte del cliente, y creo que esto es genial.

Pero quiero mostrarte más. Ahora vamos a profundizar en la biblioteca, porque quiero mostrarte cómo funciona por dentro. Así que permíteme refactorizar mi clase. Aquí, añadir nuevo, eliminar, guardar. Así que creo que ahora está bien. Así que si voy aquí. Sí, perfecto. Si abro la inspección, coloco algunos puntos de interrupción en la biblioteca del cliente de TRPC. Vale, así que si hago clic en este, genial. Y refresco. Como puedes ver aquí, estamos definiendo, estamos en el cliente TRPC. Quizás no puedes ver. Quizás sí. Vale, estamos dentro del cliente TRPC, y estamos definiendo los métodos. Así que, la consulta es un get, la mutación es un post, por supuesto, porque una mutación necesita tener algo de información extra. Vale, si seguimos, hicimos el depurador, y habilitamos esto para debug.

4. Entendiendo la Interacción Cliente-Servidor de TRPC

Short description:

Dentro del cliente, la biblioteca desencadena una solicitud HTTP con una estructura de URL específica. Esto permite que la parte del cliente de TRPC llame a la lógica de negocio. Al depurar la aplicación, se pueden establecer puntos de interrupción en la parte de la lógica de negocio y rastrearlos hasta la biblioteca. La propiedad OPTS contiene procedimientos como list, add y delete, que son funciones internas del servidor TRPC. El procedimiento delete incluye el resolutor underscore def, que finalmente llama a la función Prisma.author.findMany.

Vale, refrescar. Quizás puedo, vale. Vale, acercar un poco. Vale, como puedes ver, tenemos use query. Esta es nuestra función interna, y dentro de use query, tenemos el path, así que author.list. Si seguimos con el depurador, tenemos la mutación, así que tenemos author.add, y también author.delete. Genial.

Y quiero mostrarte otras cosas desde el cliente. Si seguimos, aquí tenemos la solicitud HTTP, así que bajo el capó, la biblioteca va a desencadenar una solicitud HTTP, y mira la URL. Así que como puedes ver, slash API slash TRCP slash blah blah blah. Así que author.list es nuestro procedimiento, y luego tienes un montón de parámetros que Next.js bajo el capó, recoge para nosotros, y luego nosotros, la parte del cliente de TRCP es capaz de llamar a nuestra lógica de negocio. ¿Pero cómo? Veamos en acción la parte del cliente, la parte del servidor.

Así que si pongo un depurador aquí, y ejecuto, quizás detengo este, y ejecuto el depurador desde el Visual Studio Code, la aplicación, por supuesto, es la misma, porque es la misma base de código. Vale. Como puedes ver aquí, tenemos un punto de interrupción en nuestra parte de la lógica de negocio. Pero si retrocedemos un poco, podemos ir a la biblioteca. Así que aquí puedes ver TRCP server, este index dot blah, blah, blah. ¿Vale? Así que si refresco la aplicación, quiero mostrarte esta propiedad en particular. Así que vamos a comprobar. Vale. Genial. Así que dentro de OPTS, tenemos procedimientos. Dentro de estos procedimientos, tenemos list, add y delete. Y esta es la función interna del servidor TRPC. Y dentro de delete, tenemos underscore def. Y dentro de underscore def, tenemos el resolutor. Resolver es una función. Tenemos cosas de Webpack. Pero al final, la función es nuestra función. Así que Prisma dot author dot find many.

5. Pros y Contras del Servidor TRPC

Short description:

El servidor TRPC funciona seleccionando los procedimientos y ejecutando la aplicación. La biblioteca tiene ventajas como la no generación de código, la seguridad de tipo y una mejor colaboración entre el front end y el back end. Sin embargo, hay desventajas como la necesidad de una pila TypeScript y la necesidad de crear más procedimientos para la versión y la selección de campos selectivos. Para exponer la API públicamente, se utiliza la biblioteca TRPC-openAPI. Un resumen de TRPC incluye la opción de usar create.t3.gg para una configuración rápida y el reconocimiento de empresas como Netflix e InterValcal.com como usuarios de TRPC.

Selecciónalos. Blah, blah, blah. Entonces, si ejecuto la aplicación, como puedes ver, todo el flujo termina aquí. Así es más o menos como funciona el servidor TRPC.

Genial. Entonces, volvamos a las diapositivas. Para discutir sobre las ventajas y desventajas de la biblioteca.

Entonces, ventajas. No hay code generation, como viste antes. No generamos ningún tipo de código sobre nuestros procedimientos, mutaciones y cosas así. Seguridad de tipo por defecto. Así que cambiamos el nombre del procedimiento, y TypeScript pronto nos alertó de que algo estaba mal. Y luego, mejor colaboración entre el front end y el back end. Porque tenemos un gran lenguaje, porque en el back end, llamamos al add, y en el front end lo mismo. Con REST API, a veces el nombre de la función es diferente. Así que ahora, con esta biblioteca, creo que la colaboración es mejor.

¿Cuáles son las desventajas? Pila Typescript. Así que necesitas tener back end en TypeScript, y front end en TypeScript también. Si quieres tener una versión de tu API, o seleccionar algunos campos particulares en un modelo, quieres seleccionar solo un campo, cosas así, necesitas crear más procedimientos. Uno para la versión 1, uno para la versión 2, y así sucesivamente. Y otra desventaja, que no es realmente una desventaja. Si necesitas exponer esta API al público, necesitas usar esta biblioteca en particular. Esta biblioteca está encima de TRPC y es TRPC-openAPI. Así que con un decorador, puedes exponer esta API al público y también crear la documentation de open API.

Genial. Entonces, un resumen. Si quieres empezar ahora mismo con TRPC, puedes usar create.t3.gg. Esta biblioteca inicia la aplicación TRPC con Tailwind, Prisma, NextAuthentication, y etc, etc. Muchas cosas que hacer sin configuración manual y es realmente genial. ¿Quién está usando TRPC? Netflix, InterValcal.com, pero en este problema en particular, puedes encontrar muchas empresas que firmaron el nombre para mostrar que están usando TRPC y si quieres probarlo ahora, puedes ir a trpc.io y encontrarás muchos recursos sobre TRPC.

QnA

Sesión de Preguntas y Respuestas: Elon Musk y las Llamadas TRPC

Short description:

Durante la sesión de preguntas y respuestas, el orador aborda la pregunta de si Elon Musk aprobaría más de 200 llamadas TRPC y cómo prevenir un mal agrupamiento. El orador explica que la respuesta depende del contexto y sugiere dividir los procedimientos en varios servicios y comunicarse con ellos a través de TRPC u otros canales.

Así que aquí inserto una diapositiva para tomar una foto de ustedes porque necesito demostrarle a mi esposa que estuve en la conferencia. ¿Pueden saludar? Hola. Genial, genial. Gracias. Muchas gracias Giorgio. Por favor, ven a nuestro stand de Preguntas y Respuestas.

Esa fue una gran charla. He sido un poco perezoso yo mismo aprendiendo sobre TRPC y me alegro de no haberlo hecho porque ahora lo aprendí de ti. Así que fue tiempo bien invertido. Eso es asombroso. Y creo que muchas otras personas también han aprendido mucho porque tenemos muchas buenas preguntas aquí.

Y por supuesto tenemos que empezar con la primera pregunta. Es la pregunta de Elon. Vale. ¿Aprobaría Elon Musk más de 200 llamadas TRPC y cómo te aseguras de que no estén mal agrupadas? Vale. Creo que Elon Musk es demasiado exigente. Déjame decir. Bueno, depende de tu contexto. Tienes que razonar sobre la pila TRPC. Y si tienes muchos procedimientos, necesitas dividirlos en muchos servicios y luego comunicarte con los servicios, con TRPC o quizás otros canales. Sí. Vale. Así que básicamente no sabe de lo que está hablando. Sí. Sí. Nunca, nunca. Ellie está aplaudiendo allí. Sí, un aplauso muy triste. Vale. Sigamos.

Manejo de Múltiples Repositorios y Escala con TRPC

Short description:

¿Cómo maneja TRPC múltiples front-ends que no están en un mono-repo con un back-end? Es posible incluir TRPC en su aplicación con múltiples repositorios, pero puede presentar desafíos en términos de refactorización de código y versionado. TRPC es más adecuado para microservicios y la creación de múltiples servicios. Las ventajas de TRPC sobre Relay, el marco de Relay de Facebook, son subjetivas. El almacenamiento en caché y la invalidación de la caché en TRPC se pueden manejar usando React query, y TRPC también ofrece agrupación para múltiples llamadas.

Esta es una pregunta que también me estaba haciendo. ¿Cómo manejarías una situación en la que tienes múltiples front-ends que no están en un mono-repo con un back-end, ¿verdad? ¿Es eso algo que TRPC puede soportar o es solo para ese tipo de back-end para front-end arquitectura?

Vale. Así que tienes un mono-repo con un ... No tienes un mono-repo. No tienes un mono-repo. Así que tienes un cliente en un repositorio y tienes un servidor en otro repositorio. ¿Cómo se mantienen estas dos cosas sincronizadas y cómo se comunican? Vale. Esta es una pregunta realmente buena. Desafortunadamente, tengo la respuesta. Así que puedes ... Si tienes múltiples repositorios, pierdes la característica de refactorización, por supuesto, porque tienes la base de código en dos partes diferentes. Pero si encapsulas el tipo de router dentro de nuestra biblioteca, puedes incluir esa biblioteca en el cliente. Pero al final, tendrás problemas con las cosas de versionado y cosas así. Así que puedes hacerlo. ¿Lo recomendarías? Creo que el enfoque de TypeScript de pila completa es el mejor. Pero si quieres incluir TRPC en tu aplicación con múltiples repositorios, puedes hacerlo.

La siguiente pregunta es una cuestión de escala, como siempre. ¿Puede TRPC funcionar para aplicaciones a gran escala, especialmente monolitos? ¿O es más adecuado para aplicaciones más pequeñas y microservicios? Creo que es mejor con microservicios y crear múltiples servicios. Hay algunas POC del autor de TRPC que muestran cómo integrar múltiples servicios para comunicarse y crear una arquitectura de microservicios. Eso es genial.

Hay una pregunta. ¿Cuáles son las ventajas de TRPC sobre Relay, específicamente, el marco de Relay de Facebook? ¿Lo has usado y sabes cuáles podrían ser las ventajas? No. Sí, esa es una pregunta difícil, creo. Relay es una de esas cosas donde las personas que lo aman realmente lo aman y todos los demás no lo entienden. Así que hablen entre ustedes, encuentren un amigo de Relay y convénzanse mutuamente de usarlo. No creo que haya respondido a esta pregunta tampoco.

Es una pregunta de Elon Musk. ¿Cómo manejas el almacenamiento en caché y la invalidación de la caché de las entidades en TRPC? ¿Está incorporado o tienes que hacerlo tú mismo? Hander De Hoody está utilizando una consulta de React por lo que puedes aprovechar todas las características de una consulta de React. También una característica interesante de TRPC es la agrupación. Así que si en un segundo lanzas muchas llamadas, Hander De Hoody las agrupa para crear cosas interesantes.

Preguntas y Respuestas: Resolución de Conflictos y Casos de Uso de tRPC

Short description:

tRPC maneja la resolución de conflictos en la lógica de negocio comprobando la existencia de claves primarias antes de crear nuevas entradas. El cliente tRPC depende del servidor tRPC y se utiliza para llamar al endpoint trpc. Aunque tRPC es una solución poderosa en ciertos contextos, la API REST y GraphQL pueden ser mejores opciones para exponer APIs públicas y manejar múltiples clientes con requisitos específicos de propiedad. tRPC no es un reemplazo para la API REST o GraphQL, sino una solución adecuada en ciertos escenarios.

Genial. Permíteme ver, hay un par de preguntas más, tal vez déjame pasarlas por la moderación y luego las leeremos juntas. Aquí vamos.

¿tRPC maneja condiciones de carrera cuando varias personas acceden a la API para realizar la misma acción? ¿O cosas como esa se delegan a Prisma? Básicamente creo que la pregunta es sobre la resolución de conflictos. La resolución de conflictos está dentro de tu lógica de negocio. Como mostré antes, si quiero crear otro autor con el mismo apellido, el apellido en este caso es la clave, la clave primaria, necesitas comprobar antes si la clave primaria existe o no. Y luego, si existe, lanza una excepción. De acuerdo.

Esta es una pregunta interesante. ¿tRPC solo para clientes? ¿Tiene tRPC algún uso si en realidad no tienes un componente de servidor? No hay mucho que puedas hacer con él, ¿verdad? Creo que no. No. Entonces, el cliente tRPC no tiene sentido sin el servidor tRPC. Porque está llamando al endpoint trcp, trpc, y no. Sí. Por cierto, tRPC, es un verdadero trabalenguas para decir. Así que RPC son llamadas a procedimientos remotos. Pero, ¿qué significa la T? ¿Es TypeScript o tipos? TypeScript, creo que es TypeScript RPC. Porque RPC está llamando a una función de otro servidor. Confundo mucho trcp, trcp. Es un lío. Sí.

Muy bien. Bueno, vamos a entrar en nuestro tema candente, cuestión espinosa. ¿Crees que GraphQL o REST es mejor que tRPC en algunos casos? ¿Hay casos en los que tRPC no va a ser la solución correcta y GraphQL o REST sería un enfoque mejor? Sí, estoy sonriendo. Porque conozco la respuesta. ¿Vale? En algunos contextos, tRPC es muy bueno. Pero si necesitas exponer con una API pública, tal vez la API REST es mejor, GraphQL también. Si tienes múltiples clientes, como digamos TV, móvil, y aplicación frontend, y necesitas obtener alguna propiedad de un modelo, tal vez GraphQL se ajuste mejor para ti. Así que hay muchos casos de uso para usar GraphQL y OPA API también. Esto no será un reemplazo para ellos, por lo que puede ser una buena solución en algunos contextos.

Verificación y validación de tipos en tiempo de ejecución con TRPC

Short description:

TRPC proporciona una verificación de tipos en tiempo de ejecución y validación de los datos que entran en la API utilizando bibliotecas como Zod. Zod ha ganado popularidad en el mundo del desarrollo de TypeScript por su API amigable para el usuario.

Bien, sí. Siempre usa la mejor herramienta para el trabajo. No hay una bala de plata o un martillo mágico. Y siempre depende. Depende, por supuesto. ¿TRPC proporciona una verificación de tipos en tiempo de ejecución o la validation de los data que entran en la API? Sí, esta es una parte que necesito omitir por el momento. Pero cuando llamas a una mutación, tienes en el objeto de entrada por supuesto, si quiero añadir un autor necesito pasar el nombre, el apellido, y en este caso, el país. Y luego tienes Zod y muchas otras bibliotecas para la validation de la entrada, y lanzar una excepción y notificarte que estás pasando algo incorrecto. Así que Zod está en la capa base para TRPC y hay muchas otras bibliotecas de validation que pueden ser útiles en este caso. Es increíble cuánto ha tomado Zod realmente como el mundo del desarrollo de TypeScript por asalto porque ha habido bibliotecas para esto siempre pero creo que Zod acierta en algo sobre la API. Es tan amigable de usar. Es realmente asombroso. Es muy agradable. Lo uso para todo también. Es maravilloso. Muy bien, sigamos. Tenemos tiempo para un par de preguntas más. Esta es interesante. ¿Podemos usar TRPC para la comunicación de servicio a servicio? ¿O es solo para cuando tienes un frontend hablando contigo? Mencionamos antes la arquitectura de múltiples microservicios, por lo que puedes usarlo para la comunicación. Permíteme hacer mi propia pregunta porque esto es algo que me estaba preguntando. Por ejemplo, si miras otros marcos de RPC como gRPC de Google, una de las razones por las que es realmente bueno para la comunicación entre servicios es que maneja cosas como la versión de las cosas siempre puedes agregar en documentos sin romper los servicios existentes y hace el empaquetado binario de diseño de cosas por lo que es muy eficiente para las cosas. ¿Está tRPC en absoluto preocupado por estas cosas o es principalmente como una solución más sencilla para donde tRPC podría ser excesivo? Creo que si tienes múltiples servicios en múltiples repositorios tienes el mismo problema porque necesitas versionar el tipo y luego usar la versión correcta para el servicio correcto por lo que si cambias algo en múltiples servicios terminas con un despliegue de gran alcance. Así que eso va a ser un desafío por lo que tal vez tRPC sigue siendo mejor para la comunicación entre servicios. Aquí hay una pregunta, parece que los CMS sin cabeza son un gran tema hoy en día, ¿has trabajado con tRPC para casos de uso clásicos de CMS sin cabeza y es beneficioso allí? No, no he usado tRPC para CMS sin cabeza. Actualmente estoy trabajando con DATO CMS y estoy usando GraphQL y termino en la fatiga del esquema. Así que si cambio algo en el esquema, necesito crear todos los tipos de typescript y es un lío. Bien. Vale, y una última pregunta. Esta es la fácil. Aquí vamos, esta. Así que en primer lugar, felicitaciones por hacer una charla de codificación en vivo y no estropear nada. ¿Podemos aplaudir a Giorgio? Eres más valiente que yo. Bien hecho. Entonces, ¿dónde podemos encontrar el código de tu demostración? ¿Está disponible en algún lugar donde la gente pueda verlo? Sí, puedo compartir mi repositorio en mi Twitter. Y también etiqueto a la conferencia por supuesto. Así que puedes encontrar todo el código y las diapositivas allí. Sí, por favor, haz fotos de Giorgio para Giorgio para que su esposa no se ponga demasiado celosa de nosotros y de su amor por JavaScript. Ahora vamos a dar un gran aplauso a Giorgio. Muchas gracias.

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.
Ref() vs. Reactive(): ¿Qué Elegir Usando Vue 3 Composition API?
Vue.js London 2023Vue.js London 2023
22 min
Ref() vs. Reactive(): ¿Qué Elegir Usando Vue 3 Composition API?
Top Content
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.
APIs están Evolucionando. Otra vez.
JSNation 2023JSNation 2023
28 min
APIs están Evolucionando. Otra vez.
Top Content
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.

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
Workshop
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
Workshop
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
Workshop
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.