Node.js 控制器和中间件之间有什么区别
我正在用express.js编写API和API。我编写的原始API仅使用路由和原始SQL查询。此后,我重写了API,现在大部分使用ORM来响应模型和迁移 我的问题是中间件和控制器的区别和用例。目前只使用中间件,因为大多数在线资源只解释什么是中间件Node.js 控制器和中间件之间有什么区别,node.js,api,express,Node.js,Api,Express,我正在用express.js编写API和API。我编写的原始API仅使用路由和原始SQL查询。此后,我重写了API,现在大部分使用ORM来响应模型和迁移 我的问题是中间件和控制器的区别和用例。目前只使用中间件,因为大多数在线资源只解释什么是中间件 我不理解控制器的用例。如果在适当的编程约定中使用它,我不想在API中省略它您应该将中间件视为API中的一个步骤,将控制器视为实际响应请求的实体 下面是一个示例,authenticationMiddleware是一个中间件,因为它是处理过程中的一个步骤,
我不理解控制器的用例。如果在适当的编程约定中使用它,我不想在API中省略它您应该将中间件视为API中的一个步骤,将控制器视为实际响应请求的实体 下面是一个示例,
authenticationMiddleware
是一个中间件,因为它是处理过程中的一个步骤,但不应返回响应。不过,如果出现错误,它也可以
然后getItems
实际处理特定于此调用的逻辑
根据经验,中间件通常会被多次重用,并且通常不会响应。相反,控制器响应并在大多数时间特定于一个端点
const express=require(“express”);
常量app=express();
功能验证中间件(req、res、next){
//检查用户是否使用req.headers.Authorization进行了身份验证
//比如说
如果(已验证){
//用户已通过身份验证,我们可以进入下一步
next();
}否则{
//用户没有经过身份验证,我们到此为止
物质状态(401);
res.send(“身份验证期间出错”);
}
}
函数getItems(请求、恢复、下一步){
//这里我们关注的是实际的响应,我们假设用户已通过身份验证
res.send({items:[]});
}
app.get(“/items”、authenticationMiddleware、getItems);
app.post(“/items”,authenticationMiddleware,createItems);//重复使用相同的中间件
app.listen(3000);
如果您指的是node/express术语,那么中间件就是路由函数/方法(get、set、delete、use等)使用的回调。回调可以将响应发送或不发送回客户端。回调实际上是的“控制器”,如果您想这样称呼它们(例如:ASP.NET Core MVC),但这取决于您。下面是一段引用自。请注意术语“中间件”,其中没有提到“控制器”
中间件功能是可以访问请求对象(req)、响应对象(res)和下一个中间件的功能
在应用程序的请求-响应周期中运行。下一个
中间件函数通常由一个名为next的变量表示
中间件功能可以执行以下任务:
- 执行任何代码
- 对请求和响应对象进行更改
- 结束请求-响应周期
- 调用堆栈中的下一个中间件函数
- 应用级中间件
- 路由器级中间件
- 错误处理中间件
- 内置中间件第三方中间件
除此之外,您还可以定义团队中的“控制器”是什么,并遵循命名约定。关键是你的个人资料和你如何区分你的关注点。我明白了。这澄清了很多事情,“控制器”不是node/express的一阶组件。如果这样定义的话,它们就是项目工件。请注意,下一个答复。