3. Роутеры
Роутер в tRPC — это объект, который группирует связанные процедуры. Думайте о роутере как о контроллере в MVC или о наборе эндпоинтов для одной сущности. Хорошо организованные роутеры делают API понятным и масштабируемым.
Создание роутера
Заголовок раздела «Создание роутера»Роутер создаётся с помощью функции router(), экспортированной из инициализированного экземпляра tRPC. Он принимает объект, где ключи — имена процедур, а значения — сами процедуры.
Вложенные роутеры
Заголовок раздела «Вложенные роутеры»tRPC поддерживает вложенность роутеров: вы можете создать userRouter, postRouter, commentRouter и объединить их в appRouter. На клиенте это выглядит как trpc.user.getById.query() — естественная иерархия.
Объединение роутеров через mergeRouters
Заголовок раздела «Объединение роутеров через mergeRouters»Функция mergeRouters позволяет объединить несколько роутеров в один плоский роутер. Это полезно, когда нужно избежать вложенности, сохраняя при этом модульность кода.
Организация больших API
Заголовок раздела «Организация больших API»Для большого API рекомендуется выносить каждый роутер в отдельный файл. Например: routers/user.ts, routers/post.ts, routers/comment.ts. Корневой appRouter только импортирует и объединяет их.
Типы роутера
Заголовок раздела «Типы роутера»Экспортируйте тип AppRouter = typeof appRouter. Этот тип используется на клиенте при создании tRPC клиента — именно через него TypeScript выводит типы всех процедур и их входных/выходных данных.