在Node.js/Express中连接中间件

pgky5nke  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(132)

下面是一个简单的Node.js/Express Web服务器示例:

var express = require('express');
var app = express();
 
app.get('/*', function(req, res){
   res.end('Hello, you requested ' + req.url + '.');
});

app.listen(3000);

当它运行时,请求http://localhost:3000/Hello-world将生成响应

Hello, you requested /Hello-world.

为了了解中间件,我想重新实现这个服务器,但是使用中间件将“获取数据”、“操作数据”和“输出数据”包含在单独的函数中。我尝试了以下方法,但是对于这段代码,请求http://localhost:3000/Hello-world没有响应。似乎只有app.get(..)代码可以执行。

var express = require('express');
var app = express();

// Step 1: get input
app.get('/*', function(req, res){
   req['testing'] = req.url;
});

// Step 2: manipulate data
app.use('/*', function(req, res, next) {
   req['testing'] = 'Hello, you requested ' + req['testing'];
   return next();
});

// Step 3: send output  
app.use('/*', function(req, res, next) {
    res.end(req['testing']);
    return next();
});

app.listen(3000);

似乎缺少了一些将功能连接在一起的东西,但是什么呢?

vaqhlq81

vaqhlq811#

//This needs to be MIDDLEWARE not a route handler
// Step 1: get input
app.use(function(req, res, next){
   req.testing = req.url;
   next();
});

// Step 2: manipulate data
app.use(function(req, res, next) {
   req.testing = 'Hello, you requested ' + req.testing;
   next();
});

// Step 3: send output  
app.get('/*', function(req, res) {
    res.end(req.testing);
});

相关问题