Cakephp3 - 在debugkit面板中显示HTTP客户端请求URL

时间:2017-11-29 06:44:39

标签: cakephp httpclient cakephp-3.x cakephp-debug-kit

我正在使用cakephp 3.x.我在调试工具包中添加了我的自定义面板,在此处显示我的自定义数据。此面板将显示URL - HTTP客户端向其发送请求。

有什么想法继续吗?

如果我需要添加任何回调函数或任何其他事件来从Cake \ Network \ Http \ Adapter \ Stream获取URL并将其记录到我的自定义调试面板。 我是第一次在调试面板上工作,所以我无法向调试面板显示HTTP客户端URL。

只有我找到了这个,我可以在下面的代码中将请求的网址跟踪为 $ url

/**
 * Helper method for doing non-GET requests.
 *
 * @param string $method  HTTP method.
 * @param string $url     URL to request.
 * @param mixed  $data    The request body.
 * @param array  $options The options to use. Contains auth, proxy etc.
 *
 * @return \Cake\Network\Http\Response
 */
protected function _doRequest($method, $url, $data, $options)
{   debug(urldecode($url));
    $request = $this->_createRequest($method, $url, $data, $options);

    $time = microtime();
    $timerKey = 'debug_http.call.' . $url . '.' . $time;
    if (Configure::read('debug')) {
        DebugTimer::start($timerKey, $method . ' ' . $url);
    }

    $response = $this->send($request, $options);

    if (Configure::read('debug')) {
        DebugTimer::stop($timerKey);
        ClientCallPanel::addCall($request, $response, DebugTimer::elapsedTime($timerKey));
    }

    return $response;
}

等待专家'响应...

1 个答案:

答案 0 :(得分:1)

查看LogPanelTimerPanelSqlPanel等内置面板如何做事,他们使用记录器和事件来收集数据。

我建议您使用相同的路径将自定义面板与HTTP客户端分离,即添加可配置的日志记录功能,您的面板可以通过注册捕获所使用的特定级别和/或范围的记录器来挂钩通过HTTP客户端,或让您的客户端调度您的面板可以订阅的事件。

另见