NodeJs-Express
简单的 demo
1 | const express = require("express"); |
中间件 (Middleware)
中间件是可以用来处理 request 和 response 对象的函数。
我们之前使用的 json-parser
从请求中获取原始数据,这些数据存储在 request
对象中,将其解析为一个 JavaScript 对象,并将其作为一个新的属性 body
分配给 request
对象。
让我们来实现我们自己的中间件,它可以打印出发送到服务器的每个请求的信息。
中间件是一个接收三个参数的函数
1 | const requestLogger = (request, response, next) => { |
在函数体的最后,调用作为参数传递的 next
函数。这个next
函数将控制权交给下一个中间件。
中间件是这样被使用的。
1 | app.use(requestLogger) |
中间件函数的调用顺序是它们被 Express
服务器对象的 use
方法所使用的顺序。请注意,json-parser
是在 requestLogger
中间件之前被使用的,因为否则在执行记录器的时候,request.body
将不会被初始化。
如果我们想让中间件函数在路由事件处理程序被调用前执行,那么就必须在路由之前使用这些中间件函数。也有一些情况,我们想在路由之后定义中间件函数。在实践中,这意味着我们要定义的中间件函数只有在没有路由处理 HTTP 请求时才会被调用。
让我们在路由之后添加以下中间件,用于捕捉向不存在的路由发出的请求。对于这些请求,中间件将返回一个 JSON 格式的错误信息。
1 | const unknownEndpoint = (request, response) => { |
morgan
注意,即使在控制台中记录数据也是危险的,因为它可能包含敏感数据,并可能违反当地的隐私法(如欧盟的 GDPR)或商业标准。
自定义日志格式
1 | morgan.format( |
自定义 token
1 | morgan.token("body", function (req, res) { |
控制台运行结果
1 | POST /api/persons 400 31 - 0.621 ms {"name":"aapls","number":"0asd20-8780"} |
mongoose
- 在 https://cloud.mongodb.com/ 上建好 project 后,本地连接上(这个步骤不记得的可以上网搜索)
- 安装 mongoose
1 | npm install mongoose |