使用Express.js做rest api,如何统一设置api的版本?
发布于 9 年前 作者 heyuncoder 4991 次浏览 最后一次编辑是 8 年前 来自 问答

之前的api格式为: api.domain.com/user/:id api.domain.com/order

现在api版本升级,url的格式变成如下: api.domain.com/v2/user/:id api.domain.com/v2/order

大家有什么好的解决方案?

8 回复

@mage3k 他说的api是指提供json接口,你说的是express的api,不是一回事儿

@i5tingapp.mountpath啊。。。

var express = require('express');

var app = express(); // the main app
var admin = express(); // the sub app

admin.get('/', function (req, res) {
  console.log(admin.mountpath); // /admin
  res.send('Admin Homepage');
})

app.use('/admin', admin); // mount the sub app

@mage3k 我知道可以嵌套调用,你的意思是让他把api独立出去,然后以路由挂载子应用的方式?是一个办法

不过还是比较麻烦

我的做法是创建routes目录

  • routes/*.js是处理请求的
  • routes/api/v0.1/*.js是处理带版本号的请求的

通过路径来约定版本号非常简单,比如多个版本共存

  • routes/api/v0.1/*.js
  • routes/api/v0.2/*.js
  • routes/api/v0.3/*.js

以此类推

@i5ting 哈哈,是的。我以为你没往下翻。 不过楼主说了是用Express嘛,如果是在已有的项目上处理的话可以这么做的吧。

@mage3k 恩,是呀,这样分开是比较好的实践,不过大部分人都怕麻烦,于是有了quick and dirty法

回到顶部