1

我是 SLimV3 的新手,我想使用 middleWare 创建 Json 输出。

我的代码是:控制器:

public function __invoke(Request $request, Response $response, $args) {
....
    $out['message'] = "ok";
    $out['code'] = 0;
    $response->withJson($out);
  }

我的路线:

  $app->get('/foo', App\Action\Foo::class)->add(new foo\Middleware());

我的中间件

class Middleware{

  public function __invoke(RequestInterface $request, ResponseInterface $response,$next) {
    $started = microtime(true);
    $response = $response->withHeader('Content-type', 'application/json');
    $response = $next($request, $response);
    $json = json_decode( (string) $response->getBody(),true);
    $json['execution_time'] = microtime(true) - $started;
    $newResponse = $response->withJson($json);
    return $newResponse;
  }
}

我的输出没问题,

{
  "message": "ok",
  "code": 0,
  "execution_time": 0.44862484931946
}   

但我不喜欢在我的控制器中创建 Json,在中间件中创建 Json Decode,然后再次创建$newResponse = $response->withJson($json);。我想阅读响应并在中间件中创建响应,或者阅读状态代码并创建自定义响应。我可以做吗 ?

4

0 回答 0