Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

817
Vistas
No se puede devolver el error 404 como json en lugar de html desde una aplicación Flask-Restful

Estoy trabajando en una prueba simple de Flask REST API y cuando llamo a {{url}}/items, por ejemplo, obtengo la lista de elementos. Sin embargo, si se pasa una llamada a un punto final que no existe, por ejemplo, {{url}}/itemsss, aparece el error 404 en html.

Me gustaría hacer que el manejo de errores sea más amigable y devolver json en lugar de html para ciertos errores como 400, 404,405...

Para el 404, por ejemplo, probé esto:

 @app.errorhandler(404) def not_found(e): response = jsonify({'status': 404,'error': 'not found', 'message': 'invalid resource URI'}) response.status_code = 404 return response

Sin embargo, no funciona.

Mi problema es similar a este: Python Flask: error json y html 404

Quería saber si usar los planos es la única forma de lograr esto.

¿Hay una forma más sencilla de generar el error 404 como json?

Por ejemplo en lugar de esto:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>404 Not Found</title> <h1>Not Found</h1> <p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>

Algo como esto:

 { error: true, status: 404, code: "error.notFound", message: "API endpoint not found", data: { } }

Agradezco su ayuda con esto.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Por lo general, cuando necesito devolver un mensaje de error personalizado con Flask-RESTful , hago algo como:

 from flask import make_response, jsonify def custom_error(message, status_code): return make_response(jsonify(message), status_code)
over 4 years ago · Santiago Trujillo Denunciar

0

Creo que encontré la solución en la documentación oficial :

 from flask import json from werkzeug.exceptions import HTTPException @app.errorhandler(HTTPException) def handle_exception(e): """Return JSON instead of HTML for HTTP errors.""" # start with the correct headers and status code from the error response = e.get_response() # replace the body with JSON response.data = json.dumps({ "code": e.code, "name": e.name, "description": e.description, }) response.content_type = "application/json" return response
over 4 years ago · Santiago Trujillo Denunciar

0

El código y la descripción están en HTTP de todos modos, solo necesitan el mensaje. Y usando jsonify del matraz.

 from flask import jsonify from werkzeug.exceptions import HTTPException @app.errorhandler(HTTPException) def handle_exception(e): return jsonify({"message": e.description}), e.code
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda