javascript - 在nodejs中的rest apis中添加前缀

标签 javascript node.js

我有一个 server.js 文件,其中我需要 services.js 进一步需要所有其他 API 文件

require('./web_services/services')(app);

我还有另外两个文件 Users.jsEvents.js 包含实际的 api。 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);
    }); 
}

现在我想在用户 api 之前加上前缀 /users,在事件 api 之前加上前缀 events/。 我试过了

app.use('/user/', require('./User/Users')(app));

Users.js

module.exports = function (app, logger) {
    // apis
};//exports

但这不起作用?我错过了什么吗?

最佳答案

我相信您可以使用 express routing 解决您的问题

您可以在 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));
...

这个文件中的所有路由都将以 /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

我想这很简单。可以引用this样板文件,我前一段时间使用 express 和 express router 制作的。有些命名约定不好,但是是的,您可以看到路由器是如何在样板中定义和使用的,以便为特定路由启用路由前缀和中间件。

关于javascript - 在nodejs中的rest apis中添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45768662/

相关文章:

javascript - Normalizr 可以在标准化数据上创建索引吗?

javascript - 有没有办法改变(或设置)世博会地点的真北?

javascript - 在 HTML5 Canvas 上使用 drawImage 调整颜色

node.js - 监听自定义端口时使用 SSL (https) 连接到 Nodejs/Socket.IO 服务器

javascript - 在 Slack 消息中格式化电话号码?

node.js - node.js/express 中的代理请求

javascript - jquery 在 jquery 脚本包含之前设置 noConflict (或等效项)

javascript - 事件返回 True/False 的 jQuery 插件

javascript - 类型错误 : Cannot read property 'id' of undefined when trying to make discord bot

linux - 是否可以在启用 v8 快照的情况下交叉编译 node.js?