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

4. Procedures: query и mutation

Процедуры — это основные строительные блоки tRPC API. Каждая процедура — это функция, которую клиент может вызвать на сервере. Они делятся на два типа: query для чтения данных и mutation для их изменения.

publicProcedure — базовая процедура, доступная всем без аутентификации. Её можно создать через t.procedure, где t — экземпляр инициализированного tRPC. Все остальные процедуры (например, protectedProcedure) создаются путём расширения базовой через .use(middleware).

Query-процедуры используются для получения данных. Они вызываются через GET-запросы (при использовании httpBatchLink) и кешируются React Query. Определяются через .query(async ({ input, ctx }) => { ... }).

Mutation-процедуры изменяют данные на сервере. Они вызываются через POST-запросы и не кешируются. Определяются через .mutation(async ({ input, ctx }) => { ... }). На клиенте используются с useMutation().

Одна из главных возможностей tRPC — автоматический вывод типов. TypeScript анализирует возвращаемое значение процедуры и автоматически типизирует клиентский код. Вам не нужно явно указывать типы ответов.

Процедура строится цепочкой методов: publicProcedure.input(schema).query(handler). Каждый вызов возвращает новую процедуру. Порядок важен: сначала .input(), затем .use() (middleware), потом .query() или .mutation().