Flask : Créer un serveur web avec paramètres dynamiques via GET

<strong>from flask import Flask, request</strong>
<strong>import json</strong>

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    return '<h1>Serveur actif</h1>'

Méthode 1 : Paramètres dans l'URL

Cette méthode permet de transmettre des données directement dans le chemin de l'URL :

<strong>@app.route("/envoyer/<donnee>", methods=['GET'])</strong>
<strong>def envoyer_donnee(donnee):</strong>
    # Conversion des caractères en binaires
    donnee_binaire = ' '.join(format(ord(x), 'b') for x in donnee)
    
    # Traitement des données...
    resultat = traiter_donnees(donnee_binaire)
    
    return '<h3>Données traitées : {}</h3>'.format(donnee)

def traiter_donnees(binaire):
    # Logique de traitement
    return "Succès"

Accessible via :

http://127.0.0.1:5000/envoyer/HelloWorld

Méthode 2 : Paramètres de requête (Query Parameters)

Cette approche utilise les paramètres de requête pour une transmission plus flexible :

<strong>@app.route("/api/envoi", methods=["GET"])</strong>
<strong>def api_envoi():</strong>
    # Récupération des paramètres
    params = request.args.to_dict()
    
    destinataire = params.get('destinataire')
    nom_destinataire = params.get('nom')
    objet = params.get('objet')
    message = params.get('contenu')
    
    # Validation des paramètres
    reponse = {'statut': 'erreur', 'details': None}
    
    if not all([destinataire, objet, message]):
        reponse['details'] = 'Paramètres manquants'
        return json.dumps(reponse, ensure_ascii=False)
    
    # Traitement du message
    message_traite = traiter_message(message)
    
    # Envoi de l'email (fonction à implémenter)
    # envoyer_email(destinataire, objet, message_traite)
    
    reponse['statut'] = 'succès'
    reponse['details'] = {
        'destinataire': destinataire,
        'objet': objet,
        'message': message_traite
    }
    
    return json.dumps(reponse, ensure_ascii=False)

def traiter_message(texte):
    """Traitement du contenu du message"""
    return "Message reçu : {}".format(texte)

Accessible via :

http://127.0.0.1:5000/api/envoi?destinataire=exemple@email.com&nom=Jean&objet=Test&contenu=Bonjour

Démarrage du serveur

<strong>if __name__ == '__main__':</strong>
    <strong>app.run(debug=True, host='0.0.0.0', port=5000)</strong>

Comparaison des méthodes

Méthode Avantages Inconvénients
URL path Simple, URL lisible Quantité limitée de données
Query string Flexible, paramètres nommés URL plus longue

La méthode GET est adaptée pour les opérations de lecture. Pour des opérations sensibles comme l'envoi d'emails, il est recommandé d'utiliser POST avec des mécanismes d'authentification appropriés.

Étiquettes: Flask Python Web-Server http-get rest-api

Publié le 4 septembre à 19h27