ExpressJS:添加前缀版本控制路由的最佳方法

Nim*_*mjo 2 node.js express

我有:

let user = require('./model/user/user.route');
let companyType = require('./model/masterCollections/companyType/companyType.route');
let jobPosting = require('./model/jobPosting/jobPosting.route');
let login = require('./model/login/login.local');


module.exports = function(app) {
  app.use('/user', user);
  app.use('/companyType', companyType);
  app.use('/login', login.local);
  app.use('/jobs', jobPosting);
}
Run Code Online (Sandbox Code Playgroud)

我可以像这样为每个人手动添加前缀

  let prefix = '/api/v1'
  app.use(prefix + '/user', user);
  app.use(prefix + '/companyType', companyType);
  app.use(prefix + '/login', login.local);
  app.use(prefix + '/jobs', jobPosting);
Run Code Online (Sandbox Code Playgroud)

但它似乎对最佳实践不利。所以我的问题是添加版本控制的最佳方法是什么。

提前致谢。

小智 9

建议按版本管理路由文件。

如果 require('folder') 调用,则文件夹中的 index.js。

我会让你知道我安排的页面。该描述的完整代码包含在此链接中:

app.js

// ... skip ...

const apiv1 = require('./route/APIV1'); //./routes/APIV1/index.js
const apiv2 = require('./route/APIV2'); //./routes/APIV2/index.js

app.use('/APIV1', apiv1);
app.use('/APIV2', apiv2);

// ... skip ...
Run Code Online (Sandbox Code Playgroud)
  • APIV1

./routes/APIV1/index.js

const express = require('express');
const router = express.Router();
const user = require('./user.js');
const jobs = require('./jobs.js');

router.use('/user', user);
router.use('/jobs', jobs);

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

./routes/APIV1/user.js

const express = require('express');
const router = express.Router();

router.get('/', function(req, res){
    res.end('/APIV1/user : get');
})


router.post('/', function(req, res){
    res.end('/APIV1/user : post');
})

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

./routes/APIV1/jobs.js

const express = require('express');
const router = express.Router();

router.get('/', function(req, res){
    res.end('/APIV1/jobs : get');
})


router.post('/', function(req, res){
    res.end('/APIV1/jobs : post');
})

module.exports = router;
Run Code Online (Sandbox Code Playgroud)
  • APIV2

./routes/APIV2/index.js

const express = require('express');
const router = express.Router();
const user = require('./user.js');
const jobs = require('./jobs.js');

router.use('/user', user);
router.use('/jobs', jobs);

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

./routes/APIV2/user.js

const express = require('express');
const router = express.Router();

router.get('/', function(req, res){
    res.end('/APIV2/user : get');
})


router.post('/', function(req, res){
    res.end('/APIV2/user : post');
})

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

./routes/APIV2/jobs.js

const express = require('express');
const router = express.Router();

router.get('/', function(req, res){
    res.end('/APIV2/jobs : get');
})


router.post('/', function(req, res){
    res.end('/APIV2/jobs : post');
})

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

如果使用这种方式,您可以简单地管理您的 API

快乐编码~