Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

499
Visualizações
Cómo manejar el error de datos adicionales en FastAPI

Así que tengo el siguiente código FastAPI:

 from fastapi import FastAPI app = FastAPI class Demo(BaseModel): content: str = None @app.post("/demo") async def demoFunc(d:Demo): return d.content

El problema es que cuando envío una solicitud a esta API con datos adicionales como:

 data = {"content":"some text here"}aaaa

O

 data = {"content":"some text here"aaaaaa} resp = requests.post(url, json=data)

Arroja un error con el código de estado 422 unprocessable entity con datos reales ("algún texto aquí") y Extra ("aaaa") en el campo de retorno en caso de data = {"content":"some text here"}aaaa :

 { "detail": [ { "loc": [ "body", 47 ], "msg": "Extra data: line 4 column 2 (char 47)", "type": "value_error.jsondecode", "ctx": { "msg": "Extra data", "doc": "{\n \"content\": \"some text here\"}aaaaa", "pos": 47, "lineno": 4, "colno": 2 } } ] }

Traté de poner la línea app=FastAPI en un bloque try-catch, sin embargo, no funciona. ¿Hay alguna manera de que pueda manejar este problema con una respuesta propia en lugar de la respuesta automática mencionada anteriormente? Algo como esto:

 {"error": {"message": "Invalid JSON body"}, "status": 0}
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

¿Qué es exactamente lo que estás tratando de lograr? Está pasando un JSON no válido y el servidor responde correctamente con el 422 unprocessable entity error . Su cliente de prueba no debería poder ejecutarse en absoluto, sin arrojar un error de invalid syntax . Entonces, supongo que lo intentó a través de OpenAPI y recibió el error 422 relevante.

Si lo que realmente quiere es manejar el error, para personalizar el error o algo así, puede anular la excepción de validación de solicitud, como se describe en la documentación (también, eche un vistazo a esta discusión ). A continuación se muestra un ejemplo.

 from fastapi import FastAPI, Body, Request, status from fastapi.encoders import jsonable_encoder from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse from pydantic import BaseModel app = FastAPI() @app.exception_handler(RequestValidationError) async def validation_exception_handler(request: Request, exc: RequestValidationError): return JSONResponse( status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, content=jsonable_encoder({"detail": exc.errors(), "body": exc.body, "custom msg": {"Your error message"}}), ) class Demo(BaseModel): content: str = None @app.post("/demo") async def demoFunc(d:Demo): return d.content

O bien, también puede devolver un PlainTextResponse con cualquier mensaje personalizado:

 from fastapi.responses import PlainTextResponse @app.exception_handler(RequestValidationError) async def validation_exception_handler(request, exc): return PlainTextResponse(str(exc), status_code=400)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda