Next.js的区别是什么?
return {
redirect: {
permanent: false,
destination: ''
}
};
和
res.redirect()
发布于 2022-05-04 22:23:57
一般来说,他们达到相同的目标,但在不同的情况下使用。
#1在redirect
中使用getServerSideProps
对象
从redirect
返回getServerSideProps
对象本质上是一种从函数内部重定向到另一条路径的更为惯用和有效的方法。来自文档
redirect
对象允许重定向到内部和外部资源。它应该与{ destination: string, permanent: boolean }
的形状相匹配。在一些罕见的情况下,您可能需要为旧的HTTP
客户端分配一个自定义状态代码,以便正确地重定向。在这些情况下,您可以使用statusCode
属性而不是permanent
属性,但不能同时使用两者。
它最终(大致)在内部执行以下代码:
res.statusCode = 307
res.setHeader('Location', '/')
res.end()
在第一个代码块中,由于307
值的关系,将使用状态代码permanent: false
执行重定向。
#2在API路由中使用res.redirect()
在Next.js中,可以在API路由中使用res.redirect()
方法重定向到指定的路径。来自文档
res.redirect([status,] path)
-重定向到指定的路径或URL。status
必须是有效的HTTP状态码。如果没有指定,status
默认为"307“”临时重定向“。
在向其传递状态代码和路径的情况下,可以使用以下方法:
res.redirect(307, '/')
https://stackoverflow.com/questions/72104532
复制相似问题