2015-02-06 150 views
1

目前是否有任何方法來捕獲傳入的請求和響應,並記錄它?我發現有'preCall'和'postCall'方法,但是,我的一些API方法並沒有嚴格按照HTTP動詞命名。使用Restler3,如何記錄請求/響應

例如,在我的'Players'類中,我有'get'方法返回給定player_id的一個玩家,'getPlayers'返回所有玩家。

回答

0

當然有!

下面是一些代碼,我從一些其它的問題SO拼湊起來:

$r->onComplete(function() use ($r) { 
// Don't log Luracast Restler Explorer recources calls 
if (! preg_match('/resources/', $r->url)) { 
    $success = $r->responseCode == 200;   
    $request = $r->getRequestData(); 
    $info = array(
     'base'    => $r->getBaseUrl(), 
     'method'   => $r->requestMethod, 
     'url'    => $r->url, 
     'api_key'   => NULL, 
     'route'    => $r->apiMethodInfo->className.'::'.$r->apiMethodInfo->methodName, 
     'data'    => $request['request_data'], 
     'ip'    => User::getIpAddress(), 
     'referer'   => (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER']: ''), 
     'http_status_code' => $r->responseCode, 
     'response'   => $success ? '' : $r->exception->getErrorMessage() 
     ); 
     print_r($info); // replace with your logging function here 

} 

});