""" Serveur Web dynamique minimaliste -- Choisir votre IP -- Choisir la valeur du PORT associé à votre serveur (8000, 8080, 9000 ...) -- Compléter la fonction reponse_a_GET pour qu'il gère de nouvelles requêtes GET si vous le voulez -- Compléter la fonction reponse_a_POST pour qu'il gère de nouvelles requêtes POST si vous le voulez -- Créer les pages HTML correspondantes -- Vérifier que code_serveur.py est bien présent dans votre dossier -- Lancer le script configuration.py Ce code fait référence à une activité se trouvant ici : www.infoforall.fr/act/javascript/gestion-des-formulaires-sur-le-serveur/ """ # 1 - Importation from http.server import HTTPServer from code_serveur import Gestionnaire from datetime import datetime # 2 - Déclarations des constantes IP = '127.0.0.1' PORT = 9000 # 3 - Déclaration des fonctions def reponse_a_GET(requete) : '''Instructions à effectuer si la requête est de type GET. requete contient les infos sur la requête''' print("::: SERVEUR ::: Reception d'une requête GET") # 1 - Récupération optionnelle des sous-informations issues de la requête chaine_requete = requete.requestline adresse_client = requete.obtenir_IP_client port_client = requete.obtenir_PORT_client chemin = requete.obtenir_chemin parametres = requete.obtenir_parametres # 2 - Traitement de la requête if chemin == '/' : fichierHTML = open('www/index.html', 'r', encoding="utf-8") codeHTML = fichierHTML.read() fichierHTML.close() requete.creer_entete(200) requete.repondre(codeHTML) elif chemin == '/liste' : tableauHTML = "
Morceau | Catégorie | Lien |
---|---|---|
{morceau} | {categorie} | {url} |
Retour à l'accueil
{tableauHTML} ''' requete.creer_entete(200) requete.repondre(codeHTML) else : codeHTML = f'''Retour à l'accueil
''' requete.creer_entete(200) requete.repondre(codeHTML) if codeHTML == '' : codeHTML = echec() requete.creer_entete(200) requete.repondre(codeHTML) def echec() : codeHTML = f'''Retour à l'accueil
''' return codeHTML def afficher(dictionnaire) : print("\nRéception d'une requête. Voici le dictionnaire des paramètres :") print(dictionnaire) for cle, valeur in dictionnaire.items() : print(f"{cle} associée à la valeur {valeur}") def activer_serveur(): '''Création et mise en route du serveur qui surveille ensuite les requêtes qu'on lui communique''' # 1 - Création de l'objet-serveur httpd Gestionnaire.GET = reponse_a_GET # on définit la fonction à exécuter sur un GET Gestionnaire.POST = reponse_a_POST # on définit la fonction à exécuter sur un POST adresse = (IP, PORT) httpd = HTTPServer(adresse, Gestionnaire) # HTTP Daemon, le gestionnaire de requêtes du serveur # 2 - Tentative de mise en route et surveillance des requêtes print(f"::: START ::: Démarrage d'un serveur d'adresse {IP}:{PORT}. CTRL-C pour stopper") httpd.serve_forever() # Démarrage et surveillance en boucle des messages arrivant au serveur print('::: STOP ::: Arrêt du serveur') httpd.server_close() # Arrêt du serveur if __name__ == '__main__': activer_serveur()