node.js - ExpressJS : Best way to add prefix versioning routes

标签 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);
}

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

  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);

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

提前致谢。

最佳答案

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

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

我会让你知道我安排的页面。 The full code for that description is included in this link:

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 ...
  • 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;

./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;

./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;
  • 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;

./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;

./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;

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

祝你编码愉快~

关于node.js - ExpressJS : Best way to add prefix versioning routes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46783270/

相关文章:

node.js - 如何修复我的应用程序中最近出现的 Node.js 错误?

javascript - 如何使用 Express 通过 HTTP 发送图像

node.js - 无法处理使用 Express 的路线

express - Jade模板中的 `body!= body`是什么意思?

node.js - 如何使用 Node.js 在 Redis 中使用 zscan?

node.js - 无法更新 Hyperledger Composer 中的现有 Assets

node.js - NodeJS 需要 ('./path/to/image/image.jpg' ) 作为 base64

json - 使用 Express.js 动态更改 JSON 间距

MySQL - 从 SELECT 插入 INSERT INTO,并在 Node Express 中传入值

node.js - babel-preset-env 无法与 webpack-dev-server v2.2.0-rc.0 一起使用