【发布时间】:2021-03-16 20:36:05
【问题描述】:
我开始使用带有 Vercel 部署的 nextjs 构建 API。设置非常简单,只需在pages/api/ 下创建文件。例如创建端点/shows、/movies、/sports 我有:
./pages/api/
/shows
/movies
/sports
这很好,但我想像这样对 API 进行版本控制:/v1/shows/、/v1/movies 等。
如果我可以基于 git commit 标签进行版本化,那就更好了。也就是说,当我合并到main 分支时,Vercel 要么部署到当前的生产环境(例如 v1 环境),要么如果有新的 git 标签,它会部署到新的生产环境(例如 v2 环境)。部署后,两个生产环境将上线(v1 和 v2),因此旧客户端不会中断。
有没有办法用 Vercel 做到这一点?还是我缺少一种更简单的方法?其他人如何使用 nextjs 处理 API 版本控制?我对想法持开放态度!
【问题讨论】:
-
我正在考虑管理此问题的一种方法是为每个版本创建分支。所以我的
main分支实际上是一个开发分支。每当我将更改合并到v1分支时,就会进行预览部署(我将确保包含正确的环境变量,以便它像生产应用程序一样部署)。然后当我需要创建v2时,我只需创建一个对应的v2分支。 -
为什么不用目录结构呢?例如,
./pages/api/v1/shows和./pages/api/v2/shows? -
这将要求我们在更新时将整个目录从 v1/ 复制到 v2/。维护两个代码目录..我不太喜欢那样..我实际上喜欢我们目前的设置,即使用版本命名的分支(v1、v2等)
标签: next.js vercel api-versioning