Express JS 中的中间件是啥

Posted

技术标签:

【中文标题】Express JS 中的中间件是啥【英文标题】:What is Middleware in Express JSExpress JS 中的中间件是什么 【发布时间】:2018-01-02 08:20:31 【问题描述】:

大家好,在 Express Framework 中,我们使用中间件,例如正文解析器

例如:-

app.use(bodyParser.urlencoded(extended : true))

什么是中间件,什么是 Express js 中的中间件,它在 Exprees js 中究竟是如何工作的,我们如何在 Express Js 中创建自定义中间件??

【问题讨论】:

expressjs.com/en/guide/using-middleware.html 核心中间件只是函数 我对这个问题投了反对票,因为它清楚地表明没有研究工作。花了 20 秒时间才找到详细说明的文档。 【参考方案1】:

中间件的名字就很能说明问题。在实际调用控制器/函数之前,我们使用中间件来完成特定任务。

router.post("/",roleGrant.grantAccess('readAny', 'currency'),validate(authValidation.add),function (req,res)
    currencyDAL.add(req.body,function (data)
        const response = responseSchema.responseSchema(data);
        response.status_code == 1 ? res.status(200).json(response) : res.status(401).json(response)
    )
)

所以你可以看到这里是一个post API,但是在调用函数之前,我调用了中间件,首先roleGrand 来判断用户是否可以调用货币API,然后我调用验证中间件来确保用户把所有调用货币 post API 所需的东西。

如果用户通过了两个中间件,那么API函数/控制器将调用,否则,API将发送响应而不调用API控制器

body-parser 用于 POST 请求。它提取传入请求流的整个正文部分并将其公开在 req.body 上。就像这里我使用 body-parser 来获取 POST 请求的正文。

【讨论】:

【参考方案2】:

每当您向服务器发送带有一些数据的请求时。为了解析特定请求的主体并从中提取数据,我们使用 body-parser 模块作为中间件。

准确地说,中间件基本上是两个应用程序之间的桥梁。

因此,使用正文解析器允许您通过解析传入请求并将请求对象转发到处理该特定 URL 格式的 API 函数来访问传入请求的 req.body 属性。

它有各种类型的解析器来满足你的需求,例如:

    JSON 生的 文字 URL 编码

如需更广泛的解释,您可以访问docs。

【讨论】:

以上是关于Express JS 中的中间件是啥的主要内容,如果未能解决你的问题,请参考以下文章

Express 中间件丨Node.js-初识 Express

如何将参数传递给 Express JS 中的中间件函数?

在express.js中间件请求中获取“#”之后的url

express js 中的 Socket.io:Router.use 需要中间件功能但未定义

如何在 node.js express 中的路由 end() 之后停止中间件序列继续进行

什么是 Node.js 的 Connect、Express 和“中间件”?