当手动或通过 <Link>
元素进行非 GET Inertia 请求时,应确保始终使用正确的 Inertia 重定向响应进行响应。
例如,如果您的控制器正在创建新用户,则您的“store”端点应返回重定向到标准 GET
端点(例如,您的用户“index”页面)。Inertia 将自动遵循此重定向并相应地更新页面。
class UsersController extends Controller
{
public function index()
{
return Inertia::render('Users/Index', [
'users' => User::all(),
]);
}
public function store(Request $request)
{
User::create(
$request->validate([
'name' => ['required', 'max:50'],
'email' => ['required', 'max:50', 'email'],
])
);
return to_route('users.index');
}
}
在 PUT
、PATCH
或 DELETE
请求后重定向时,必须使用 303
响应代码,否则后续请求将不会被视为 GET
请求。 303
重定向与 302
重定向非常相似;但是,后续请求被明确更改为 GET
请求。
如果您使用的是我们的官方服务器端适配器之一,所有重定向将自动转换为 303
重定向。
有时需要重定向到外部网站,甚至在处理 Inertia 请求时重定向到应用程序中的另一个非 Inertia 端点。这可以通过使用服务器端发起的 window.location
访问(通过 Inertia::location()
方法)来实现。
return Inertia::location($url);
Inertia::location()
方法将生成一个 409 Conflict
响应,并在 X-Inertia-Location
标头中包含目标 URL。当客户端收到此响应时,Inertia 将自动执行 window.location = url
访问。