Validate that controllers with `blueprints` can't have `component_parsers` (#217)
Otherwise we would do two parsings in a single HTTP request.
This is not good.
Right now this code is possible:
@final
class _ErrorBody(pydantic.BaseModel):
error: int
class _ErrorHandlingBlueprint(
Blueprint[PydanticSerializer],
Body[_ErrorBody], # <- first body parsing
):
def post(self) -> str:
return str(self.parsed_body.error)
class _ErrorHandlingController(
Controller[PydanticSerializer],
Body[dict[str, int]], # <- second body parsing
):
blueprints: ClassVar[Sequence[_BlueprintT]] = [_ErrorHandlingBlueprint]
def get(self) -> int:
return self.parsed_body.get('error', 0)
This must raise a validation exception in
ControllerValidator.We allow endpoints in the final composed controllers, but they must not use any parsing. Like
OPTIONS, for example. If users want to have parsed data, then they should create a blueprint.#django_modern_rest #good_first_issue #enhancement #help_wanted
sent via relator