miércoles, 22 de enero de 2025

Crear una API de Python desde zero - Parte 1

Para poder interactuar con algunas APIs que usan Python como yfinance tendrás que crearte tu entorno de Python en tu servidore web. En este artículo voy a detallar los pasos para instalar Python, crear un entorno virtual y hacer una primera 

El primer paso es instalar el software necesario: 

# sudo apt-get update
# sudo apt-get install -yq git supervisor python python3-pip python3-distutils
# sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

Después de un rato instalando y configurando componentes, se completará la instalación instalando un entorno virtual y tambien instalaremos la libreria de yfinance que usaremos más adelante.  

# sudo pip install --upgrade pip venv
# sudo pip install yfinance


El siguiente paso es crear un Entorno Virtual sobre el que empezar a trabajar. 

Crea una carpeta en la que vas a dejar los entornos: 

# mkdir entornos
# cd entornos

Una vez dentro de la carpeta, puedes crear un entorno ejecutando el comando: 
# python3 -m venv mi_entorno

Este comando crea un nuevo directorio que ya tiene algo de contenido: 






Para usar este entorno es necesario activarlo, algo que se puede hacer con el comando que llama al script de activación: 

# source mi_entorno/bin/activate

Una vez estas dentro de la línea de comando puedes empezar a trabajar en él. 

(mi_entorno) usuario@instance-1:~/entornos$ nano hola.py 

Dentro del editor nano añade una única linia:
 
print("Hola Mundo!")


Y cierra nano apretando Ctrl+X y guardando el contenido. Despues podrás ejecutar el programa: 

(mi_entorno) usuario@instance-1:~/entornos$ python hola.py

Ahora el siguiente paso es crear una API web, para ello usaremos el framework Flask . Flask es un entorno ligero y flexible que facilita la creación de aplicaciones webs y APIs, provee herramientas y librerias que permiten gestionar las peticiones HTTP, el enrutado entre otras tareas.
Así pues, el siguiente paso es instalar Flask: 

(mi_entorno) usuario@instance-1:~/entornos$ pip install flask 




Con esto ya podemos empezar a crear nuestra aplicación. Como ejemplo, vamos a crear una aplicación web que consulta el valor de una acción cualquier, por ejemplo Para ello volvemos usar el editor nano y creamos un fichero que llamaremos api.py : 

(mi_entorno) usuario@instance-1:~/entornos$ nano api.py

Y copiaremos el siguiente código de ejemplo que consulta el valor de Alphabet Inc:


from flask import Flask, jsonify
import yfinance as yf

app = Flask(__name__)

def obtener_precio(ticker):
    try:
        bbva = yf.Ticker(ticker)
        info = bbva.info
        precio_actual = info.get('regularMarketPrice')
        if precio_actual is None:
            precio_actual = info.get('previousClose')
            if precio_actual is None:
                return {"precio": "Precio no disponible"}
            else:
                return {"precio": precio_actual, "tipo": "Precio de cierre anterior"}
        return {"precio": precio_actual, "tipo": "Precio actual"}
    except Exception as e:
        print(f"Error al obtener datos: {e}")
        return {"error": "Error al obtener el precio"}

@app.route('/precio')
def obtener_precio_ruta():
    precio = obtener_precio("GOOG")
    return jsonify(precio) # Devuelve un JSON

if __name__ == '__main__':
    app.run(debug=True)

Con el código guardado, procedemos a ponerlo en marcha llamando al fichero: 

(mi_entorno) usuario@instance-1:~/entornos$ python api.py
Y vemos que este arranca y crea un servicio web que empieza a escuchar por el puerto 5000:



Si lanzamos una consulta al servicio usando el navegador de la línea de comando curl veremos que si esta funcionando como esperamos: 

# curl http://127.0.0.1:5000/precio



En los siguiente artículos modificaremos la API para que pueda recibir el ticker como argumento, publicaremos la api como un servicio web de producción y crearemos una página web que pueda utilizar esta API. 

Enlaces: 





No hay comentarios:

Publicar un comentario