req是请求。 它承载着请求的http操作(get/post),路径(URL)和参数等
res是回复。 我们通过它决定什么时候返回,以及返回什么数据给发出请求的人或系统
middleware就是express的中间件
1. 对应一个URL路径,我们可以设置一到多个中间件
2. 请求依次通过每一个中间件,如果没有中途返回(红色那条虚线)的话
我们可以把中间件想象成流水线上负责不同生产步骤的工人,每一个工人都拿着上游传递过来的半成品(req)进行检查或处理。如果某一位置的工人处理时发现半成品有问题,可以中途打回,如果没问题,加工后在传递给下一层。能顺利通过所有的检查和处理的,就到达业务逻辑层,最后经由(res)返回成品。
req用法差异:
req.query
req.params.id
req.body
它们的作用都是从req里面获取用户请求的数据。
controller里面有两个比较特别的东西。
1. next:它是一个函数。调用方法next()其实就是会把控制权交到下一个middleware,把请求交给它处理
2. catch:它能捕获上面处理业务逻辑时候的错误。 把next放在这里,作用就是,当有错误发生的时候,express注册的错误处理中间件就会处理这个错误
定义路由
MVC中的路由,就是路径和controller的对应关系。
注意: 1. 路由的定义和配置,是按照http方法+url两者来标识的。
2. 路由定义的顺序是有讲究的。在module.exports.routers里面,URL和controller的对应关系,是按顺序注册到express框架里面的。