簡體   English   中英

如何在PHP Restler 3中記錄所有請求?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM