Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ExpressJS: Best way to add prefix versioning routes

I have:

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

I can added manually prefix to each one like this

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

But it seems that it is not a good for best practices. So my question is what is the best way to add versioning.

Thanks in advance.

like image 242
Nimatullah Razmjo Avatar asked Sep 21 '25 08:09

Nimatullah Razmjo


1 Answers

It is recommended to manage the route file by version.

If require('folder') called, index.js in folder.

I'll let you know the page that I have arranged. 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;

If this using a way, you can simple management your API

Happy coding~

like image 130
멍개-mung Avatar answered Sep 22 '25 22:09

멍개-mung