代码之家  ›  专栏  ›  技术社区  ›  mercury

NextJs重定向与res.redirect

  •  0
  • mercury  · 技术社区  · 4 年前

    Next.js中

    return {
      redirect: {
        permanent: false,
        destination: ''
      }
    };
    

    res.redirect()
    
    0 回复  |  直到 4 年前
        1
  •  1
  •   juliomalves    4 年前

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

    #1使用 redirect 中的对象 getServerSideProps

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

    这个 重新使用 对象允许重定向到内部和外部 资源。它应该与 { destination: string, permanent: boolean } 。在极少数情况下,您可能需要指定 旧版本的自定义状态代码 HTTP 客户端正确重定向。在里面 在这些情况下,您可以使用 statusCode 属性而不是 permanent 属性,但不是两者都有。

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

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

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

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

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

    res.redirect([status,] path) -重定向到指定的路径或URL。 status 必须是有效的 HTTP status code 如果没有指定, 地位 默认为“307”“临时重定向”。

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

    res.redirect(307, '/')