Перейти к содержимому

3. Роутеры

Роутер в tRPC — это объект, который группирует связанные процедуры. Думайте о роутере как о контроллере в MVC или о наборе эндпоинтов для одной сущности. Хорошо организованные роутеры делают API понятным и масштабируемым.

Роутер создаётся с помощью функции router(), экспортированной из инициализированного экземпляра tRPC. Он принимает объект, где ключи — имена процедур, а значения — сами процедуры.

tRPC поддерживает вложенность роутеров: вы можете создать userRouter, postRouter, commentRouter и объединить их в appRouter. На клиенте это выглядит как trpc.user.getById.query() — естественная иерархия.

Функция mergeRouters позволяет объединить несколько роутеров в один плоский роутер. Это полезно, когда нужно избежать вложенности, сохраняя при этом модульность кода.

Для большого API рекомендуется выносить каждый роутер в отдельный файл. Например: routers/user.ts, routers/post.ts, routers/comment.ts. Корневой appRouter только импортирует и объединяет их.

Экспортируйте тип AppRouter = typeof appRouter. Этот тип используется на клиенте при создании tRPC клиента — именно через него TypeScript выводит типы всех процедур и их входных/выходных данных.