tRPC - Mueve rápido y no rompas nada

Rate this content
Bookmark

Cómo, por qué y cómo usar tRPC por su creador

FAQ

TRPC permite construir APIs seguras de tipo fácilmente sin necesidad de esquemas o generación de código. Se define una función en el backend y se exporta como un tipo. En el frontend, se utiliza este tipo para configurar un cliente TRPC, ofreciendo autocompletado y seguridad de tipo directamente inferidas desde la función backend.

TRPC simplifica el proceso de creación de APIs al eliminar la necesidad de generar código o definir esquemas explícitamente. Esto resulta en un desarrollo más rápido y directo, permitiendo un mejor flujo de trabajo entre los equipos de backend y frontend.

Sí, TRPC no está vinculado específicamente a React o Node.js y puede ser utilizado con diferentes frameworks como Svelte o React Native sin dependencias específicas.

TRPC utiliza validadores de tipo como Zod para asegurar que las entradas y salidas de las funciones cumplan con los tipos esperados, lo cual es crucial para mantener la integridad de los datos en las aplicaciones.

Sí, TRPC puede ser utilizado en aplicaciones móviles que emplean tecnologías como React Native o Expo, proporcionando las mismas ventajas de seguridad de tipo y facilidad de uso que en aplicaciones web.

TRPC permite la generación de especificaciones compatibles con OpenAPI a través de un paquete específico, facilitando la creación de clientes seguros en diferentes lenguajes que no sean TypeScript.

Para implementar TRPC en un monorepo, se puede utilizar herramientas como NX, Turbo repo o Lerna, lo cual facilita la gestión del código y la compartición de tipos entre el backend y el frontend.

Alexander Johansson
Alexander Johansson
26 min
14 Apr, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

tRPC es una herramienta que simplifica el desarrollo de API al permitirte llamar funciones en el backend y tener los datos de tipo inferidos en el frontend sin generación de código. Proporciona seguridad de tipo y autocompletado al consultar bases de datos usando Prisma. tRPC se puede utilizar con varios frameworks de frontend y tiene características como batching automático y middlewares. Se puede compartir entre repositorios utilizando un monorepo o publicando los tipos como un paquete npm. tRPC es fácil de configurar en comparación con gRPC y proporciona validación de entrada y salida incorporada.

1. Introducción a TRPC y Desarrollo de API

Short description:

Estoy muy feliz de estar aquí para hablar de mi bebé, TRPC. Realmente está creciendo mucho. Pero quiero preguntar, ¿quién aquí ha usado TRPC? Un poco sobre mí. Comencé a hacer sitios web usando Microsoft Frontpage. Y luego me pasé a Node.js principalmente en 2011. PHP siempre ha sido como una estrella polar en DX para mí. Desde que dejé PHP, tenemos que trabajar con APIs. Pasamos mucho tiempo discutiendo sobre cuál es la forma correcta de los datos. Y solo mira cómo hacemos una API hoy en día. Así que me pregunto si podríamos hacer que las APIs sean tan fáciles como llamar a una función, porque muchos de nosotros aquí hoy, todos somos personas de Node, probablemente estaremos usando JavaScript tanto en el frontend como en el backend.

Entonces, bienvenidos. Estoy muy feliz de estar aquí para hablar de mi bebé, TRPC. Sí, mi bebé está creciendo mucho. En este momento tenemos más de 24,000 estrellas en GitHub, acercándonos a las 200,000 descargas semanales de npm y no muestra signos de desaceleración. Realmente está creciendo mucho. Pero quiero preguntar, ¿quién aquí ha usado TRPC? OK. Muy bien. Espero que haya más después de hoy. Un poco sobre mí. Aquí estoy en mi primera sesión de programación en grupo a los ocho o nueve años, tal vez. Alrededor de esta edad, también comencé a hacer sitios web usando Microsoft Frontpage. Y luego comencé con este tipo de pila LAMP, PHP y MySQL. Y me pasé a Node.js principalmente en 2011 o algo así. Y PHP para mí siempre ha sido como una estrella polar en DX. Realmente me encantaba la simplicidad de poder llamar a una consulta de base de datos junto con tu HTML y simplemente renderizarlo. ¿Se apagó? Vale, problemas técnicos. Vale, se duerme si no lo toco durante un tiempo. Así que voy a acelerar. Pero sí, desde que dejé PHP, sabes, tienes que trabajar con las APIs, cuando haces aplicaciones nativas, también trabajé con eso. Tienes que trabajar con API. Así que siento que cada vez que construimos o consumimos APIs, es un dolor, pasamos mucho tiempo haciendo especificaciones de API. Pasamos mucho tiempo discutiendo sobre cuál es la forma correcta de los datos. Y tenemos muchas herramientas fragmentadas para lidiar con eso tanto en el backend como en el frontend. Y solo mira cómo hacemos una API hoy en día. Así que hoy, por lo general, cuando comienzas a hacer una API, comienzas con una especificación porque quieres tener un contrato entre tu backend y frontend. Para que sepas cómo debería lucir la forma de tus datos. Y luego, con suerte, tienes alguna generación de código para tener un entorno seguro en el backend, donde validas que tu API cumple con la especificación y allí también escribes tu lógica empresarial real. Y luego, en tu frontend, escribes, en el caso de GraphQL, escribes una consulta GraphQL y luego esperas un poco más de generación de código y luego obtienes un buen hook al final, en el caso de React, que puedes usar. Y siento que hay demasiados pasos en esto. Así que me pregunto si podríamos hacer que las APIs sean tan fáciles como llamar a una función, porque muchos de nosotros aquí hoy, todos somos personas de Node, probablemente estaremos usando JavaScript tanto en el frontend

2. Llamando funciones y consultando bases de datos con TRPC

Short description:

Entonces, en TRPC, puedes llamar a una función en tu backend y tener los datos de tipo inferidos en tu frontend sin generación de código. Puedes configurar un enrutador, definir un procedimiento y usar validadores seguros de tipo como Zod. TRPC te permite construir APIs seguras de tipo fácilmente sin esquemas ni generación de código. También puedes consultar una base de datos usando Prisma y obtener autocompletado y seguridad de tipo en tu frontend.

y en el backend. Entonces, ¿por qué no simplemente poder llamar a una función en lugar de pasar por todos estos pasos para tener un tipo de tipo para simplemente llamar y obtener algunos data o escribir algunos data? ¿Cómo haces lo mismo en TRPC? Lo primero que haces es escribir una función en tu backend, hablaré un poco más sobre esto, es un poco pequeño. Y luego usas esa función. Todo lo que necesitas hacer es definir una función en tu backend, todos los datos de tipo se infieren directamente en tu frontend sin necesidad de ninguna generación de código o pasos adicionales. Veamos un ejemplo un poco más completo. Aquí tenemos un servidor completo de Node.js usando TRPC. En la parte superior importamos algunas dependencias, configuramos TRPC, enrutador y un punto final o procedimiento o función. Usaré las palabras punto final, procedimiento y función de manera intercambiable en esta charla. Y luego al final, iniciamos el servidor HTTP. Lo que quiero que nos centremos en esta parte. Esto es lo que cambia de enrutador a enrutador, de punto final a punto final. Entonces, lo que hacemos aquí es configurar un enrutador en TRPC, definimos un procedimiento y una función llamada greet. Decimos que esto toma un argumento de entrada que es una cadena usando un validador seguro de tipo llamado Zod. Y luego decimos que esto es una consulta y devolvemos un saludo con hola usuario. Y luego aquí está la magia de TRPC y TypeScript. Simplemente exportamos nuestro backend como un tipo. Y en el frontend, usamos eso, usamos eso, veamos, ese tipo para configurar un cliente TRPC y de inmediato obtienes autocompletado en todas las rutas de API que tienes. Obtienes salidas seguras de tipo inferidas directamente desde tu función backend. Ten en cuenta aquí que no declaras ningún tipo en absoluto, simplemente lo obtienes de inmediato. Lo que hace TRPC es permitirte construir APIs seguras de tipo fácilmente sin ningún esquema o generación de código.

Y nuevamente, un ejemplo un poco más completo, en este caso, estamos consultando una base de datos. Aquí tenemos un enrutador de publicaciones donde puedes consultar publicaciones por ID, puedes consultar una lista, puedes agregar una publicación. Entonces aquí tenemos un procedimiento que toma una entrada que es un objeto y un ID. Y decimos que esto es una consulta, usamos Prisma, que es seguro en términos de tipo o M para TypeScript para consultar nuestra base de datos, obtener algunos campos y devolver esa publicación. Lo que obtienes de inmediato en el frontend es el autocompletado de todas tus rutas de API. Obtienes seguridad de tipo y autocompletado en la consulta. Aquí estoy usando la biblioteca React de TRPC. Y luego obtienes ese resultado seguro de tipo directamente desde la base de datos. Si cambias algo aquí, se actualizará de inmediato en tu frontend. Para mostrarte algo de codificación en vivo, grabé un video justo antes de esta charla hoy porque la codificación en vivo en el escenario es un poco arriesgada.

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

Despídete de tus esquemas de API con tRPC
React Day Berlin 2022React Day Berlin 2022
29 min
Despídete de tus esquemas de API con tRPC
¿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.
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.

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