0

我想记录 API 的每个请求和响应。

$app->hook('slim.after.router', function () use ($app) { 
    $request = $app->request; 
    $response = $app->response;
    echo "<pre>";print_r($response);die;

});

在这里,我得到了正确的请求,但是当我尝试打印出响应时,我得到了

Slim\Http\Response Object
(
    [status:protected] => 200
    [headers] => Slim\Http\Headers Object
        (
            [data:protected] => Array
                (
                    [Content-Type] => application/json
                )

        )

    [cookies] => Slim\Http\Cookies Object
        (
            [defaults:protected] => Array
                (
                    [value] => 
                    [domain] => 
                    [path] => 
                    [expires] => 
                    [secure] => 
                    [httponly] => 
                )

            [data:protected] => Array
                (
                )

        )

    [body:protected] => 
    [length:protected] => 0
)

我能够在 API 响应中呈现正确的响应,但不能像在日志中那样。

任何帮助,将不胜感激。谢谢!

4

1 回答 1

0

使用 ofslim.after而不是slim.after.router已经解决了这个问题。

文档中所述

slim.after.router :- 在发送路由器之后、在响应发送到客户端之前以及在关闭输出缓冲之后调用此钩子。这个钩子在 Slim 应用程序生命周期中被调用一次。

slim.after :- 在关闭输出缓冲和将响应发送到客户端之后调用此挂钩。这个钩子在 Slim 应用程序生命周期中被调用一次。

$app->hook('slim.after', function () use ($app) { 
    $request = $app->request; 
    $response = $app->response;
    echo "<pre>";print_r($request);die;
});

输出:-

Slim\Http\Response Object
(
    [status:protected] => 200
    [headers] => Slim\Http\Headers Object
        (
            [data:protected] => Array
                (
                    [Content-Type] => application/json
                )

        )

    [cookies] => Slim\Http\Cookies Object
        (
            [defaults:protected] => Array
                (
                    [value] => 
                    [domain] => 
                    [path] => 
                    [expires] => 
                    [secure] => 
                    [httponly] => 
                )

            [data:protected] => Array
                (
                )

        )

    [body:protected] => {"data":{"Authorization":"786876866","user":{"id":"1","user_role":"1"}},"status":200,"success":true,"message":"user authentication successful"}
    [length:protected] => 577
)

当然你也会得到响应对象:)

于 2019-05-17T09:27:50.970 回答