【发布时间】:2017-03-20 07:37:35
【问题描述】:
我需要检查请求发送到服务器的时间。为此,我探索了“req”对象。它有一个“_startTime”属性,它为我提供了发送请求的客户端计算机的系统时间。
我找不到此属性的官方文档。
【问题讨论】:
我需要检查请求发送到服务器的时间。为此,我探索了“req”对象。它有一个“_startTime”属性,它为我提供了发送请求的客户端计算机的系统时间。
我找不到此属性的官方文档。
【问题讨论】:
据我所知,_startTime 不是 Express 在请求对象上设置的。
记录器模块morgan 添加了它,但约定名称以下划线开头的属性是“私有的”:它们仅供内部使用,不应依赖。
但是,自己添加这样的属性并不是很困难。在 Express 中,最合乎逻辑的方法是为此使用中间件函数:
app.use((req, res, next) => {
req._requestStarted = new Date();
next();
});
因为设置此属性的是您自己的应用程序代码,所以您始终可以依赖它存在(而不是 _startTime,因为它供 morgan 内部使用,将来可能会被删除或重命名)。
吹毛求疵:这个值不反映发送请求的客户端的系统时间,它是服务器接收请求的服务器时间。在 HTTP 中,客户端通常不会将自己的本地时间与请求一起发送。
【讨论】: