使用 nextjs 和 vercel 管理 API 版本

clu*_*clu 1 api-versioning next.js vercel

我开始使用 nextjs 和 Vercel 部署构建一个 API。设置非常简单,只需在pages/api/. 例如创建端点/shows/movies/sports有:

./pages/api/
    /shows
    /movies
    /sports
Run Code Online (Sandbox Code Playgroud)

这很好,但我想像这样对 API 进行版本控制:/v1/shows//v1/movies等等。

如果我可以基于 git commit 标签进行版本控制就更好了。也就是说,当我合并到main分支时,Vercel 要么部署到当前的生产环境(例如 v1 env),或者如果有新的 git 标签,它就会部署到新的生产环境(例如 v2 env)。部署后,两个生产环境将上线(v1 和 v2),因此旧客户端不会中断。

有没有办法用 Vercel 做到这一点?或者我缺少更简单的方法吗?其他人如何使用 nextjs 处理 API 版本控制?我对想法持开放态度!

sty*_*fle 9

如果您想使用相同的端点并根据 v1/v2 提供不同的响应,您可以向文件添加重写next.config.js

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

那么当你去参观的时候/v/1/shows,就和参观一样了/api/shows?version=1

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