diff --git a/aiohttp_pydantic/oas/__init__.py b/aiohttp_pydantic/oas/__init__.py index ef45dcf..71f69ad 100644 --- a/aiohttp_pydantic/oas/__init__.py +++ b/aiohttp_pydantic/oas/__init__.py @@ -13,10 +13,13 @@ def setup( apps_to_expose: Iterable[web.Application] = (), url_prefix: str = "/oas", enable: bool = True, + raise_validation_errors: bool = False, ): if enable: oas_app = web.Application() oas_app["apps to expose"] = tuple(apps_to_expose) or (app,) + for a in oas_app["apps to expose"]: + a['raise_validation_errors'] = raise_validation_errors oas_app["index template"] = jinja2.Template( resources.read_text("aiohttp_pydantic.oas", "index.j2") ) diff --git a/aiohttp_pydantic/view.py b/aiohttp_pydantic/view.py index e04f71e..241e0ff 100644 --- a/aiohttp_pydantic/view.py +++ b/aiohttp_pydantic/view.py @@ -83,7 +83,10 @@ def inject_params( else: injector.inject(self.request, args, kwargs) except ValidationError as error: - return json_response(text=error.json(), status=400) + if self.request.app['raise_validation_errors']: + raise + else: + return json_response(text=error.json(), status=400) return await handler(self, *args, **kwargs)