我开始使用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版本控制?我愿意接受各种想法!
如果您想使用相同的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配置文件。我的假设是,错误是由动态路径引起的,但我找不到我的错误。此外,部署应用程序时没有页面