重定向对象与 Next.js 中的 res.redirect 的区别

Difference between redirect object and res.redirect in Next.js

Next.js和

有什么区别
return {
  redirect: {
    permanent: false,
    destination: ''
  }
};

res.redirect()

一般来说,它们实现相同的目标,但用于不同的上下文。

#1 在 getServerSideProps

中使用 redirect 对象

getServerSideProps 返回一个 redirect 对象本质上是一种从该函数内重定向到另一个路径的更惯用和有效的方法。来自 documentation:

The redirect object allows redirecting to internal and external resources. It should match the shape of { destination: string, permanent: boolean }. In some rare cases, you might need to assign a custom status code for older HTTP clients to properly redirect. In these cases, you can use the statusCode property instead of the permanent property, but not both.

最终(大致)在内部执行以下代码:

res.statusCode = 307
res.setHeader('Location', '/')
res.end()

在您的第一个代码块中,由于 permanent: false 值,重定向将以状态代码 307 执行。

#2 在 API 路线中使用 res.redirect()

在Next.js中,可以在API路由中使用res.redirect()方法重定向到指定路径。来自 documentation:

res.redirect([status,] path) - Redirects to a specified path or URL. status must be a valid HTTP status code. If not specified, status defaults to "307" "Temporary redirect".

它可以按如下方式使用,其中将状态代码和路径传递给它:

res.redirect(307, '/')