tRPC в TypeScript: упрощение разработки API
Создание API обычно подразумевает выбор между REST или GraphQL. Вы тратите время на настройку маршрутов, управление схемами и синхронизацию типов между фронтендом и бэкендом. Если вы используете TypeScript на обеих сторонах, этот процесс кажется громоздким. В итоге вы пишете одни и те же типы дважды.
tRPC меняет этот рабочий процесс. Он избавляет от необходимости создавать отдельный контракт API. Вместо этого он использует TypeScript для автоматического обмена типами между вашим сервером и клиентом.
Зачем использовать tRPC?
- Отсутствие ручной синхронизации типов: вы пишете функцию на сервере, и клиент мгновенно узнает типы входных и выходных данных.
- Никакой генерации кода: вам не нужно запускать дополнительные инструменты для создания типов.
- Отсутствие расхождения схем: поскольку клиент использует типы сервера напрямую, ваш фронтенд всегда синхронизирован с бэкендом.
- Ускорение разработки: это ощущается как вызов функции в локальном файле, а не как выполнение сетевого запроса.
Традиционные методы имеют свои недостатки. REST требует ручных вызовов fetch и дублирования типов. GraphQL предоставляет схему, но усложняет процесс за счет резолверов и генерации кода (codegen).
tRPC рассматривает ваш бэкенд как набор типобезопасных функций. Вы определяете процедуры в роутерах. Клиент импортирует тип вашего роутера и вызывает эти процедуры напрямую.
Пример рабочего процесса:
- Определите процедуру на сервере с валидацией (например, с помощью Zod).
- Экспортируйте тип роутера.
- Вызовите эту процедуру на клиенте с полным автодополнением и типобезопасностью.
Когда стоит использовать tRPC:
- Ваш фронтенд и бэкенд используют TypeScript.
- Вы контролируете обе стороны стека.
- Вы создаете внутренние инструменты, админ-панели или full-stack приложения на Next.js.
- Вы работаете в монорепозитории.
Когда стоит избегать tRPC:
- Вы создаете публичный API для множества разных пользователей.
- Ваши клиенты используют другие языки, такие как Python или Go.
- Вам требуется сложное версионирование API.
tRPC не является заменой REST или GraphQL в любом сценарии. Это инструмент для скорости и безопасности, когда ваш стек унифицирован. Он устраняет сложности на границах API и позволяет вам сосредоточиться на написании логики.
Источник: https://dev.to/geekyants/trpc-in-typescript-simplify-api-development-without-boilerplate-3lm3