重定向对象与 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, '/')
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 olderHTTP
clients to properly redirect. In these cases, you can use thestatusCode
property instead of thepermanent
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, '/')