我想记录所有对站点、框架 Yii 的 HTTP 请求。
我可以使用框架的标准功能吗?
我们已经使用onBeginRequest
or完成了它onEndRequest
。在此处查看更多信息:如何在 Yii 中使用事件
本质上,您将全局请求事件与您自己的类挂钩,然后做任何您想做的事情。
在Yii2中,事件被调用beforeRequest
并且afterRequest
( http://www.yiiframework.com/doc-2.0/guide-structure-applications.html )
例如:
Yii::$app->on('afterRequest', function($event) {
//do something...
//response object is in $event->sender->response
//response data is in $event->sender->response->data
//request object is in $event->sender->request
});
但这是在响应数据准备好响应内容之前(根据响应格式,例如Response::FORMAT_JSON
),所以如果你想要真正的最终响应正文,你需要这样做(http://www.yiiframework.com/doc-2.0/指南运行时响应.html#sending-response):
Yii::$app->response->on(\yii\web\Response::EVENT_AFTER_SEND, function($event) { //alternatively use EVENT_AFTER_PREPARE
//now you can access $event->sender->content and eg. $event->sender->getHeaders()
//Also, you have access to the request through Yii::$app->request
});