tRPCプロシージャへのZod統合
ZodスキーマをtRPCのクエリおよびミューテーションの入力に直接適用し、自動バリデーションを実現します。
「tRPCプロシージャへのZod統合」はCoddyKit上の無料tRPC End-to-End Type Safe APIsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはtRPC End-to-End Type Safe APIs学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 tRPC End-to-End Type Safe APIsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
Zod for tRPC Inputs
Welcome! In this lesson, we'll learn how to integrate Zod schemas directly into your tRPC procedures. This powerful combination ensures your API inputs are always valid and type-safe from end-to-end.
You'll see how to apply Zod for both query and mutation procedures, making your backend more robust and developer-friendly.
Why Validate Inputs?
Input validation is a critical part of building secure and reliable APIs. It's like a quality check at the entrance of your backend.
- Security: Prevents malicious or malformed data from reaching your server logic.
- Data Integrity: Ensures your database only stores valid and expected data formats.
- Predictability: Your backend logic can trust the shape of incoming data, reducing runtime errors.
- Better DX: Developers get immediate feedback on incorrect inputs.
The `.input()` Method
tRPC makes integrating Zod incredibly simple. Each tRPC procedure (query, mutation, or subscription) has an .input() method.
This method accepts a Zod schema, which tRPC then uses to automatically validate any incoming data for that procedure. If the input doesn't match the schema, tRPC handles the error for you!
Query Input Validation
For queries, you often expect parameters like an ID or a search term. Zod helps ensure these inputs are of the correct type and format.
Let's look at an example where we want to fetch a user by their unique ID. We'll use Zod to ensure the userId is a valid UUID string.
Query Procedure Example
Here's how you define a tRPC query procedure that uses a Zod schema to validate its input:
import { initTRPC } from '@trpc/server';
import { z } from 'zod';
// Minimal tRPC context setup
const t = initTRPC.create();
// Define a query procedure with Zod input validation
const getUserById = t.procedure
.input(z.object({
userId: z.string().uuid("Invalid user ID format"),
}))
.query(({ input }) => {
// In a real app, this would fetch from a database
console.log(`Fetching user: ${input.userId}`);
return { id: input.userId, name: "Alice" }; // Mock data
});
// To use this, you'd add it to a tRPC router, e.g.:
// export const appRouter = t.router({ getUserById });Mutation Input Validation
Mutations often involve creating or updating data, which means they typically accept more complex input objects. Zod is perfect for validating these structures.
Consider a scenario where you want to create a new blog post. We'll validate its title and optional content to ensure they meet certain criteria.
Mutation Procedure Example
Here's a mutation procedure that validates input for creating a new post using a Zod object schema:
import { initTRPC } from '@trpc/server';
import { z } from 'zod';
// Minimal tRPC context setup
const t = initTRPC.create();
// Define a mutation procedure with Zod input validation
const createPost = t.procedure
.input(z.object({
title: z.string().min(5, "Title must be at least 5 characters"),
content: z.string().optional(),
authorId: z.string().uuid("Invalid author ID"),
}))
.mutation(({ input }) => {
// This would typically save data to a database
console.log(`Creating post: "${input.title}" by ${input.authorId}`);
return { id: "new-post-uuid", ...input, createdAt: new Date() }; // Mock
});
// To use this, you'd add it to a tRPC router, e.g.:
// export const appRouter = t.router({ createPost });Automatic Validation Errors
One of the biggest advantages of integrating Zod directly with tRPC is automatic error handling.
- If a client sends input that doesn't match your Zod schema, tRPC will automatically catch the validation error.
- It then sends a standardized
BAD_REQUESTerror response to the client, including details about why the validation failed. - This means you don't need to write manual
try/catchblocks for basic input validation!
Benefits of Direct Integration
Combining Zod with tRPC's .input() method provides several powerful benefits:
- End-to-End Type Safety: Your Zod schema defines the exact input type, which tRPC automatically infers and shares with your client.
- Single Source of Truth: Define validation rules once, and they apply on both the server (runtime) and client (compile-time).
- Reduced Boilerplate: No need for manual validation checks or separate DTOs (Data Transfer Objects).
- Clear API Contracts: Your procedures clearly state their input requirements through their Zod schemas.
Quick Check: Zod in tRPC
You've learned how Zod schemas are integrated into tRPC procedures. Let's test your understanding!
Recap: Zod & tRPC Synergy
Great job! You've successfully learned how to integrate Zod schemas into your tRPC procedures.
- We saw that the
.input()method is key for applying Zod schemas to both queries and mutations. - This integration provides automatic validation, end-to-end type safety, and clear API contracts.
- By leveraging Zod within tRPC, you build more robust, secure, and developer-friendly APIs with less effort.
Next up, we'll explore more advanced Zod schemas!
AI チューターと学ぶ tRPC End-to-End Type Safe APIs — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 10
- レッスン
- 40
よくある質問
「tRPCプロシージャへのZod統合」レッスンは無料ですか?
はい。「tRPCプロシージャへのZod統合」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、tRPC End-to-End Type Safe APIsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 tRPC End-to-End Type Safe APIsコースには全4レッスンが含まれています。
「tRPCプロシージャへのZod統合」で何を学びますか?
ZodスキーマをtRPCのクエリおよびミューテーションの入力に直接適用し、自動バリデーションを実現します。 ブラウザで直接実行するハンズオンコードでtRPC End-to-End Type Safe APIsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
tRPC End-to-End Type Safe APIsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのtRPC End-to-End Type Safe APIsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「tRPCプロシージャへのZod統合」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このtRPC End-to-End Type Safe APIsレッスンでコードを書いて実行できますか?
はい。すべてのtRPC End-to-End Type Safe APIsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Zodスキーマ入門
- 複雑なZodスキーマの定義
- tRPCプロシージャへのZod統合
- Zodデータの変換と詳細な検証