使用Express.js做rest api,如何统一设置api的版本?
之前的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,不是一回事儿
@i5ting 看app.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法