1

我想根据一些 req.headers 数据输出 HTML 或 JSON。例如:如果 req.headers.contentType == "application/json" 我将返回 JSON,否则返回 HTML。

var route = {
    html: function(req, res, next) {},
    json: function(req, res, next) {}
}

app.get('/test', route);

这显然是行不通的。所以我想我需要一个中介功能:

app.get('/test', _findRoute);

function _findRoute(req, res, next) {
    if(req.headers["content-type"] === "application/json") {
        return route.json;
    } else {
        return route.html;
    }
}

这显然也不起作用,因为此时我实际上无法访问路由对象。

我可以:

app.get('/text', _findRoute(route));

但后来我无权访问 req 对象。

我实际上不知道如何进行,所以非常欢迎任何想法:)

4

1 回答 1

4

app.get('/text', _findRoute(route));如果您只稍微重写 _findRoute ,最后一个版本 ( ) 就可以工作。

function _findRoute (route) {
  return function (req, res, next) {
    if(req.headers["content-type"] === "application/json") {
     route.json(req, res, next);
    }
    else {
     route.html(req, res, next);
    }
  }
}
于 2013-10-07T12:25:47.720 回答