Repositorio Open Source de documentación en nuevas tecnologías
En el siguiente link encontrará el repositorio creado para este ejemplo práctico: https://github.com/tfg2021-escinf-una/covid-info/ . En caso de tener alguna duda con el código, puede revisar directamente en el repositorio, o bien, clonarlo y modificarlo.
Abrir el repositorio microservices-tutorial/notification-microservice
en el editor de texto
microservices-tutorial
│
└─── notification-microservice
│ │ README.md
│ │ .gitignore
requirements.txt
donde se manejan las dependenciasEn este archivo se pueden ver todas las dependencias que se instalan para el proyecto. Un ejemplo del archivo requirements.txt es el siguiente: requirements.txt
requirements.txt
pip install -r requirements.txt
serve.sh
. Este debe ser ejecutado mediante una consola para levantar el servidor.
#!/bin/bash
cd app
export MJ_APIKEY_PUBLIC="YOUR PUBLIC API_KEY HERE"
export MJ_APIKEY_PRIVATE="YOUR PRIVATE SECRET HERE"
export EMAIL_SENDER="YOUR AUTHORIZED EMAIL ON MAILJET HERE"
export FLASK_APP="app"
flask run
from flask import Flask, request
from flask_cors import CORS
from mailjet_rest import Client
import os
Flask
Framework para la creación de APIsos
permite la utilización de features del Sistema Operativo.request
se utiliza para hacer llamados HTTP.Client
libreria que nos permite realizar conexion con MailJet para lograr enviar los correos electrónicosapp = Flask(__name__)
CORS(app)
api_key = os.environ['MJ_APIKEY_PUBLIC']
api_secret = os.environ['MJ_APIKEY_PRIVATE']
sender_address = os.environ['EMAIL_SENDER']
mailjet = Client(auth=(api_key, api_secret), version='v3.1')
@app.route("/notify", methods=['POST'])
def notification():
args = request.get_json()
email_to_send = args["address"]
subject = args["subject"]
message = args["message"]
data = {
'Messages': [
{ "From": { "Email": sender_address, "Name": "TFG - Sitio Didáctico" },
"To": [{ "Email": email_to_send, "Name": "You" }],
"Subject": subject,
"TextPart": "Greetings from Mailjet!",
"HTMLPart": f"<h4>{message}</h4><br />Este es un mensaje autogenerado por nuestro sitio utilizando MailJet."
}
]
}
result = mailjet.send.create(data=data)
return result.json()
if __name__ == '__main__':
app.run(port=5000, debug = True)
POST
utilizando el decorador @app.route
notification
, este será ejecutado cada vez que la ruta sea llamada.POST
mailjet
chmod +x <fileName> -- Esto le dara permisos de ejecución en caso de no tenerlos
./serve.sh
Una vez realizados todos estos pasos, el servidor está listo para recibir peticiones HTTP en el puerto 5000