I am trying to validate the JSON request and based on that I want to return the response code using Fast API. By default, Fast API returns 422
for validation exceptions, but I want to follow the Open API standards and as per that ideally, it should be 400
for validation exceptions. Hence, in order to achieve that, I developed something like below:
class Item(BaseModel):
id: str
value: str
class Message(BaseModel):
message: str
responses = {400: {"model": Message, "description": "The item was not found"}}
@app.post("/v1/validate", response_model=Item,
responses={**responses, 200: {"content": "valid"}})
def output_port_validate(provisioning_request: ProvisioningRequest):
result = ApiController(dbt_provisioner).validate_request(provisioning_request)
if result:
return result
else:
return Response(status_code=400, content={"message": "Item not found"})
However, it is giving me 500 internal server error in response to the below error:
raise ResponseValidationError(
fastapi.exceptions.ResponseValidationError
I followed the official documentation but had no luck.
P.S. I have standard data classes as models, not the Pydantic ones.