gpt4 book ai didi

node.js - Controller 和中间件有什么区别

转载 作者:行者123 更新时间:2023-12-03 12:10:25 29 4
gpt4 key购买 nike

我在 express.js 中编写和 API。我编写的原始 API 仅使用路由和原始 SQL 查询。从那以后,我大部分时间都使用 ORM 来重写 API 来响应模型和迁移。

我的问题是中间件和 Controller 有什么区别和用例。目前只使用中间件,因为大多数在线资源只解释什么是中间件。

我不明白 Controller 的用例。如果在正确的编程约定中使用它,我不想从我的 API 中省略它

最佳答案

您应该将中间件视为 API 中的一个步骤,而将 Controller 视为实际响应请求的实体。

波纹管是一个例子,其中 authenticationMiddleware是一个中间件,因为它是处理过程中的一个步骤,但不应返回响应。但是,如果出现错误,它可以。

然后getItems实际上处理特定于此调用的逻辑。

根据经验,中间件经常被重用不止一次,而且通常不响应。相反, Controller 响应并且大部分时间特定于一个端点。

const express = require("express");
const app = express();

function authenticationMiddleware(req, res, next) {
// Check that the user is authenticated using req.headers.Authorization
// for example

if (authenticated) {
// The user is authenticated, we can go to the next step
next();

} else {
// The user is not authenticated, we stop here
res.status(401);
res.send("Error during authentication");
}
}

function getItems(req, res, next) {
// Here we focus on the actual response, we assume that the user is authenticated
res.send({ items: [] });
}

app.get("/items", authenticationMiddleware, getItems);
app.post("/items", authenticationMiddleware, createItems); // Re-use the same middleware

app.listen(3000);

关于node.js - Controller 和中间件有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57274465/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com