gpt4 book ai didi

php - 如何在 PHP ReSTLer 3 中记录所有请求?

转载 作者:可可西里 更新时间:2023-11-01 00:42:19 24 4
gpt4 key购买 nike

我已经使用 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 替换为您的日志记录函数

关于php - 如何在 PHP ReSTLer 3 中记录所有请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31853608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com