簡體   English   中英

基於自定義參數的快速路由處理程序

[英]Express route handler based with custom parameters

我想基於一些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;
    }
}

這顯然也行不通,因為此時我實際上無法訪問route對象。

我可以:

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

但是然后我無權訪問req對象。

我實際上不知道如何進行,所以任何想法都非常受歡迎:)

如果僅稍微重寫_findRoute,則最后一個版本( app.get('/text', _findRoute(route)); )將起作用。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM