getMethod(); $currentParams = $request->getParsedBody(); // In requests that do not allow body or if the body has already been parsed, continue to next middleware if ( ! empty($currentParams) || contains($method, [ self::METHOD_GET, self::METHOD_HEAD, self::METHOD_OPTIONS, ]) ) { return $handler->handle($request); } return $handler->handle($this->parseFromJson($request)); } private function parseFromJson(Request $request): Request { $rawBody = $request->getBody()->__toString(); if (empty($rawBody)) { return $request; } try { $parsedJson = json_decode($rawBody); return $request->withParsedBody($parsedJson); } catch (JsonException $e) { throw MalformedBodyException::forInvalidJson($e); } } }