redirect
これは30xレスポンスを送信するためのショートカットです。
import { redirect } from "@remix-run/node"; // または cloudflare/deno export const action = async () => { const userSession = await getUserSessionOrWhatever(); if (!userSession) { return redirect("/login"); } return json({ ok: true }); };
デフォルトでは302が送信されますが、希望するリダイレクトステータスコードに変更できます。
redirect(path, 301); redirect(path, 303);
セッションのコミットなど、ヘッダーを設定するためのResponseInitを送信することもできます。
ResponseInit
redirect(path, { headers: { "Set-Cookie": await commitSession(session), }, }); redirect(path, { status: 302, headers: { "Set-Cookie": await commitSession(session), }, });
もちろん、自分で構築したい場合は、このヘルパーを使わずにリダイレクトを行うこともできます。
// これはショートカットです... return redirect("/else/where", 303); // ...これはこれと同じです return new Response(null, { status: 303, headers: { Location: "/else/where", }, });
また、コールスタックを抜け出してすぐにリダイレクトするために、リダイレクトをスローすることもできます。
if (!session) { throw redirect("/login", 302); }