我是 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);
。我想阅读响应并在中间件中创建响应,或者阅读状态代码并创建自定义响应。我可以做吗 ?