[英]How to log all requests in PHP Restler 3?
我用Luracast Restler 3 RC 6( https://github.com/Luracast/Restler/tree/3.0.0-RC6 )创建了一个API,现在我想创建一个登录到我的API,以便每个请求都为将记录API。 我试图在任何地方寻找答案,没有运气。 所以我的问题是:
如何在Restler 3中创建日志记录类/函数,每次发出请求时都会调用它? 应该以某种方式实现路由,还是什么? 我需要这样的东西:
logging($route, $http_method, $format, $api_key, $parameters);
这个函数/类应该获取正在进行的请求的所有可能信息,并将其插入到logging
表中,如下所示:
+----+---------------------+------------+----------+----------------+--------+---------------------------+
| id | log_time | ip_address | api_key | route | method | parameters |
+----+---------------------+------------+----------+----------------+--------+---------------------------+
| 1 | 2015-08-06 14:32:54 | 127.0.0.1 | ASDFasdf | /v1/users/list | GET | all_given_parameters_here |
+----+---------------------+------------+----------+----------------+--------+---------------------------+
我不是要求你为我创建一个用于记录的函数/类,我只是需要一些关于如何以及在何处执行此操作的指导,或者它是否可能?
编辑:忘记提及我还需要记录方法,该方法用于给定的路由:GET,POST,PUT,PATCH或DELETE。 也许还使用了格式(JSON或XML)。
编辑:我认为我应该在某种程度上扩展Luracast \\ Restler \\ Routes.php Routes->find()
但是如何以及在哪里?
您可以使用事件处理程序(在调用阶段)。 请参阅以下示例
use Luracast\Restler\Restler;
use Luracast\Restler\User;
$r = new Restler();
$r->onCall(function () use ($r) {
// Don't log Luracast Restler Explorer recources calls
if (!preg_match('/resources/', $r->url)) {
$info = array(
'base' => $r->getBaseUrl(),
'method' => $r->requestMethod,
'url' => $r->url,
'route' => $r->apiMethodInfo->className.'::'.$r->apiMethodInfo->methodName,
'version' => $r->getRequestedApiVersion(),
'data' => $r->getRequestData(),
'ip' => User::getIpAddress(),
);
print_r($info);
}
});
$r->addAPIClass('Say');
$r->handle();
将print_r
替换为您的日志记录功能
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.