当前位置: 首页 > 知识库问答 >
问题:

使用nextjs和vercel管理API版本

伊飞光
2023-03-14

我开始使用nextjs和Vercel部署构建一个API。安装非常简单,只需在pages/api/下创建文件即可。例如,创建endpoint/显示/movies/sports我有:

./pages/api/
    /shows
    /movies
    /sports

这很好,但我希望API的版本如下:/v1/shows//v1/movies,等等。

如果我能基于git提交标签创建一个新版本就更好了。也就是说,当我合并到main分支时,Vercel要么部署到当前的生产环境(例如v1 env),要么如果有新的git标记,它部署到新的生产环境(例如v2 env)。部署后,两个生产环境将处于活动状态(v1和v2),因此旧客户端不会中断。

有没有办法和Vercel合作?还是我缺少一个更简单的方法?其他人如何使用nextjs处理API版本控制?我愿意接受各种想法!

共有1个答案

诸葛奇玮
2023-03-14

如果您想使用相同的endpoint并基于v1/v2提供不同的响应,您可以将重写添加到您的next.config.js文件。

module.exports = {
  async rewrites() {
    return [
      {
        source: '/v/:version/:rest*',
        destination: '/api/:rest*?version=:version',
      }
    ]
  }
}

那么当你访问/v/1/shows时,它将与访问/api/shows相同吗?版本=1

这意味着您可以检查API中的req.query.version以确定适当的响应。

 类似资料:
  • 我试图在Vercel上部署我的NextJS应用程序,但构建总是失败,错误为,即使NextJS应用程序已成功构建。我已经联系了Vercel支持部门,但他们只能在我公开我的存储库时帮助我,不幸的是,这不是一个选项。我已经向他们提供了整个项目的ZIP文件,但他们没有接受。 我在这里发布这篇文章,希望有人知道是什么导致了这个错误。任何想法都非常感谢。 编辑:这里有一个重现错误的回购:https://git

  • 问题内容: 我一直在搜索如何使用Spring 3.2.x管理REST API版本,但没有找到易于维护的东西。我将首先解释我所遇到的问题,然后是一个解决方案……但我确实想知道是否在这里重新发明轮子。 我想基于Accept标头管理版本,例如,如果请求具有Accept标头application/vnd.company.app-1.1+json,我希望spring MVC将其转发到处理此版本的方法。而且由

  • 在部署到vercel后,我的一个页面上出现了这个错误,在开发模式下一切正常。 我认为问题可能是我的fetch/API之一,因为它使用第一个fetch请求中的数据作为第二个fetch请求的URL。。。 我的所有其他页面都有不同的API/获取请求,可以正常工作。。。

  • 我一直在搜索如何使用Spring3.2.x管理REST API版本,但没有找到任何易于维护的内容。我先解释一下我遇到的问题,然后再给出一个解决方案...但我不知道我是不是在重新发明轮子。 以1.0版本的API为例,到1.8版本,在1.0版本中引入了一个处理程序,并在1.7版本中进行了修改,我希望以以下方式处理这个问题。假设代码在一个控制器中,并且有一些代码能够从头中提取版本。(以下为Spring无

  • 来自Ruby on Rails,我发现在NextJS上很难理解环境变量的概念,特别是在Vercell平台上。我遵循了NextJS留档,它建议Vercell留档在项目设置中设置环境变量,即使是开发环境。所以我做了,并用vercel env拉他们。env.local。但是当我运行开发服务器时,process.env变量总是未定义的。到目前为止,我发现了很多关于这方面的问题,但运气不佳。 我使用的示例代

  • 我有一个没有集成api的NextJS应用程序,我想部署到Vercel。当我在本地运行它时,它工作得很好。,而且我也可以在没有任何错误的情况下构建它。。然而,当我在Vercel部署它时,我收到一个。 以下是我的文件夹结构: 我正在使用NextJs 10.0.3。 以下是已部署应用的链接。 我没有nextjs配置文件。我的假设是,错误是由动态路径引起的,但我找不到我的错误。此外,部署应用程序时没有页面