es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se devuelve un archivo desde una respuesta de API en flask_restful?

Tengo dos API’s, una es básicamente para generar PDF’s en base a los datos enviados.

Este es el endpoint de la primera API:

http://localhost:5000/api/sendReceiptData

Retorna un archivo PDF como adjunto.

La segunda API consumirá la primera API y deberá devolver un PDF como adjunto en la respuesta. Lo he intentado, pero obtengo este error: TypeError: Object of type bytes is not JSON serializable.

¿Cómo puedo devolver una respuesta de archivo desde la primera API dentro de esta segunda API?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para devolver una respuesta de archivo desde el primer API dentro del segundo API, puedes usar la biblioteca requests en Python para hacer una solicitud GET a la URL del endpoint del primer API, pasando los parámetros o encabezados requeridos. Luego, puedes devolver la respuesta de archivo en el segundo API de la siguiente manera:

    import requests
    from flask import make_response
    
    # Define el endpoint del segundo API
    @app.route('/api/getReceipt', methods=['GET'])
    def get_receipt():
        # Hacer una solicitud GET al endpoint del primer API
        response = requests.get('http://localhost:5000/api/sendReceiptData', params={'data': 'datos de ejemplo'})
    
        # Usar el contenido de la respuesta para crear un objeto de respuesta de Flask
        pdf = response.content
        response_headers = {'Content-Type': 'application/pdf', 'Content-Disposition': 'attachment; filename=ejemplo.pdf'}
        return make_response((pdf, 200, response_headers))
    

    Ten en cuenta que necesitas establecer el encabezado Content-Type a application/pdf y el encabezado Content-Disposition a attachment; filename=ejemplo.pdf para especificar que la respuesta se debe tratar como un archivo PDF adjunto. Además, es posible que necesites modificar los parámetros que se pasan al endpoint del primer API y los encabezados enviados con la solicitud GET según los requisitos específicos de tu aplicación.

Comments are closed.