Tengo un servidor FastAPI que se comunica con otro servidor API (Lumen) para recuperar datos, básicamente solo envía las rutas al servidor Lumen.
Dentro de las rutas de Lumen tenemos algunas reglas de validación y cuando pasamos una solicitud de cuerpo no válido, falla y devuelve un código de error 422
y un mensaje. El problema es que mi punto final de Fast API devuelve un modelo de response_model
para la solicitud en particular, por lo que cuando ocurre un error de validación, intenta devolver el modelo de respuesta y el servidor falla porque los campos de code
y message
no existen en nuestro modelo de respuesta.
@router.post("/products/offers", response_model=OfferSearchResult, operation_id="offer_search") async def offer_search( body: OfferSearchRequest, context: AppContext = Depends(get_context), max_per_product: Optional[conint(ge=1, le=100)] = Query(None, alias="maxPerProduct"), sort_by: Optional[OfferSort] = Query(None, alias="sortBy"), ) -> OfferSearchResult: offer_search_result = await OfferService(context).get_offers(body, max_per_product=max_per_product, sort_by=sort_by) return offer_search_result
Traté de resolver esto anulando validation_exception_handler
pero no funcionó, ¿cómo puedo devolver el mensaje de error de validación de Lumen para que regrese como una respuesta rápida de API?