[英]Add prefix in rest apis in nodejs
I have a server.js
file in which I have required services.js
that further requires all the other API files 我有一个
server.js
文件,其中我需要services.js
,它还需要所有其他API文件
require('./web_services/services')(app);
I have two other files Users.js
and Events.js
that holds the actual apis. 我有另外两个文件
Users.js
和Events.js
,它们保存着实际的api。 The services.js
require both the files services.js
需要这两个文件
var logger = require("../logger/logger");
module.exports = function (app) {
require('./User/Users')(app,logger);
require('./Event/Events')(app,logger);
// in case of api error
app.use(function (err, req, res, next) {
res.status(err.status || 500);
res.send({ 'status': res.status, 'message': err });
logger.error(err);
});
}
Now I want to prefix /users
before users apis and events/
before event apis. 现在我想在用户apis和
events/
事件apis之前添加前缀/users
。 I have tried 我努力了
app.use('/user/', require('./User/Users')(app));
Users.js Users.js
module.exports = function (app, logger) {
// apis
};//exports
but this is not working? 但这不起作用? Am i missing something?
我错过了什么吗?
I believe you can solve your problem by using express routing 我相信您可以使用快速路由解决您的问题
You can initialize router in service.js
and then pass it around to enable routes and middleware in it and can define prefix in it in the service file as you were trying to do. 您可以在
service.js
初始化路由器,然后传递它以在其中启用路由和中间件,并且可以在服务文件中定义前缀,就像您尝试的那样。
// service.js
var express = require('express')
var router = express.Router();
...
app.use('/users', require('./User/Users')(router, logger));
app.use('/events', require('./Event/Events')(router, logger));
...
All the routes in this file will be prefixed by the /users
because we have mentioned it in the service file. 此文件中的所有路由都将以
/users
为前缀,因为我们已在服务文件中提及它。
// Users.js
module.exports = function (router, logger) {
// middleware that is specific to this router
router.use(function timeLog (req, res, next) {
logger('users middleware', req); // or however you are using your logger
next();
})
// this route will be `/user/`
router.get('/', function (req, res) {
res.send('Users home page')
})
// this route will be `/users/about`
router.get('/about', function (req, res) {
res.send('About users')
})
return router;
};//exports
It's pretty straight forward I guess. 我猜这很直接。 You can refer this boilerplate, I made a while back ago using express and express router.
您可以参考这个样板,我前一段时间使用快递和快递路由器。 Some naming convention is not good but yeah you can see how the router is defined and used in the boilerplate to enable route prefixing and middleware for specific routes.
一些命名约定并不好,但是你可以看到如何在样板中定义和使用路由器来为特定路由启用路由前缀和中间件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.