2015-09-28 37 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

相关问题