2015-09-28 74 views
2

跟進此解決方案的問題:https://stackoverflow.com/a/31883204/3548238Luracast Restler 3日誌onRespond

  1. 如果我要登錄「onRespond()」事件的請求時,我怎麼能訪問狀態代碼?例如:如果請求響應狀態代碼200,我想記錄「成功= 1」,如果它的東西,然後「成功= 0」
  2. 我可以以某種方式訪問​​消息,如果我的API拋出異常「拋出新的RestException(404,」找不到示例「);」或者auth失敗或者其他原因。
  3. 我可以/我如何使一些請求,以便他們不會在任何情況下登錄?我知道我應該爲它創建一些註釋,但是:如何?

例如是這樣的:

/** 
* 
* @status  200 
* 
* @description Get all logs 
* @url   GET logs 
* @access  protected 
* @class  AccessControl {@requires admin} 
* 
* @log   false 
* 
* @throws RestException 
*/ 
public function list_all_logs() { 
... 
... 

回答

1

您應該使用的onComplete代替onRespond

爲什麼?

  • onRespond() - 發送響應
  • onComplete()之前解僱 - 發送響應

這裏後被解僱是回答你所有的問題,假設您要添加@log false評論到你想要的API方法的完整解決方案排除

use Luracast\Restler\Restler; 
use Luracast\Restler\User; 

$r = new Restler(); 
$r->onComplete(function() use ($r) { 
    if (
     !isset($r->apiMethodInfo->metadata['log']) || 
     $r->apiMethodInfo->metadata['log'] == 'true' 
    ) { 
     $success = $r->responseCode == 200; 
     $info = array(
      'success' => $success, 
      'message' => $success ? '' : $r->exception->getErrorMessage() 
     ); 
     print_r($info); //your logging function here! 
    } 
}); 
$r->addAPIClass('Say'); 
$r->handle(); 
+0

爲什麼再次感謝你,優秀的答案。你們好棒 :) – Kirbo