diff --git a/config/pipeline.php b/config/pipeline.php index da98ec7..8467ee4 100644 --- a/config/pipeline.php +++ b/config/pipeline.php @@ -7,6 +7,7 @@ use Api\App\Middleware\AuthorizationMiddleware; use Api\App\Middleware\ContentNegotiationMiddleware; use Api\App\Middleware\DeprecationMiddleware; +use Api\App\Middleware\MalformedRequestBodyMiddleware; use Api\App\Middleware\ResourceProviderMiddleware; use Dot\ResponseHeader\Middleware\ResponseHeaderMiddleware; use Mezzio\Application; @@ -28,6 +29,7 @@ // - return ProblemDetails response $app->pipe(ProblemDetailsMiddleware::class); + $app->pipe(MalformedRequestBodyMiddleware::class); $app->pipe(BodyParamsMiddleware::class); $app->pipe(ServerUrlMiddleware::class); $app->pipe(CorsMiddleware::class); diff --git a/src/App/src/Middleware/MalformedRequestBodyMiddleware.php b/src/App/src/Middleware/MalformedRequestBodyMiddleware.php new file mode 100644 index 0000000..7434e15 --- /dev/null +++ b/src/App/src/Middleware/MalformedRequestBodyMiddleware.php @@ -0,0 +1,31 @@ +handle($request); + } catch (MalformedRequestBodyException $exception) { + throw BadRequestException::create( + $exception->getMessage() ?: 'Error when parsing JSON request body: Syntax error' + ); + } + } +}