フォームとミューテーション
フォームはウェブアプリケーションでデータを作成および更新するための手段です。Next.jsはAPIルートを使用してフォーム送信とデータ変更を処理する強力な方法を提供します。
補足:
- 近々、App Routerへの漸進的な移行とサーバーアクションを使用したフォーム送信とデータ変更の処理を推奨する予定です。サーバーアクションにより、明示的にAPIルートを作成せずに、コンポーネントから直接呼び出せる非同期サーバー関数を定義できます。
- APIルートはCORSヘッダーを指定しないため、デフォルトで同一オリジンのみとなります。
- APIルートはサーバー上で実行されるため、環境変数を介して、クライアントに公開せずに機密値(APIキーなど)を使用できます。これはアプリケーションのセキュリティにとって重要です。
Pagesルーターでは、サーバー上でデータを安全に変更するAPIエンドポイントを手動で作成する必要があります。
次に、イベントハンドラーからAPIルートを呼び出します:
基本的なクライアントサイドのフォームバリデーションには、required
やtype="email"
などのHTML検証を推奨します。
より高度なサーバーサイドのバリデーションには、zodのようなスキーマバリデーションライブラリを使用して、データを変更する前にフォームフィールドを検証できます:
フォーム送信が失敗した場合にエラーメッセージを表示するには、Reactの状態を使用できます:
サーバーでフォームが送信されている間、読み込み状態を表示するにはReactの状態を使用できます:
ミューテーション後にユーザーを別のルートにリダイレクトする場合、任意の絶対・相対URLにredirect
できます:
APIルート内でレスポンスのsetHeader
メソッドを使用してCookieを設定できます:
APIルート内でcookies
リクエストヘルパーを使用してCookieを読み取ることができます:
APIルート内でレスポンスのsetHeader
メソッドを使用してCookieを削除できます: