node.js - NodeJS设计模式: simple http router

标签 node.js design-patterns

我正在开发一个nodeJS路由器,想知道在使用nodeJS路由http请求时是否有更快/更好的方法。

我不想使用某种框架中的路由器,我想自己构建它。

var servletRoutes = {
    "/grid/api/proxy" : statusServlet,
    "/grid/register" : registerServlet,
    "/grid/unregister" : unregisterServlet,
    "/selenium-server/driver" : rcRequestHandler
};

var parseIncoming = function(req, res, cb) {
    var srvUrl = url.parse(req.url.toString(), true);
    var servlet, route;
    if (servletRoutes[srvUrl.pathname]) {
        servlet = servletRoutes[srvUrl.pathname];
        return servlet.handleRequest(req, cb, res);
    } else {
        // slower lookup of routes
        for (route in servletRoutes) {
            if (route === srvUrl.pathname.substring(0, route.length)) {
                servlet = servletRoutes[route];
                return servlet.handleRequest(req, cb, res);
            }
        }
    }

    return cb("Invalid endpoint");
};

最佳答案

我们就是这样做的

var express = require( 'express' );
var app = express();
app.use( '/', app.router );
app.post('/grid/api/proxy', statusServlet,);
app.post('/grid/api/register', registerServlet,);
...
app.use( function ( request, response ) {
    response.send( 404 );
});
app.use( errorHandler );

关于node.js - NodeJS设计模式: simple http router,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27036362/

相关文章:

node.js - Upstart 重生健康过程

ios - 改进冗余 if else 查询(也许使用设计模式?)并减少全局变量?

javascript - Node promise 不会将连续的嵌套响应推送到数组

c# - MVC 中 Controller 操作命名的一致性

c++ - 游戏对象互相交谈

ios - 如何让大类更优雅?

c# - 如何轻松实现聚合对象的接口(interface)? (语言无关)

node.js - “$”未被识别为内部或外部命令

node.js - Sequelize数据库错误: permission denied for relation notice_opened_tbl

javascript - NodeJS 对 Intersango.com 的 HTTPS 请求