...
Voici un script python permettant de simuler un mini server web et affichant les données reçues ici en http://localhost:8000 :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse, parse_qs
import json
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
# Parse l'URL et ses paramètres
parsed_path = urlparse(self.path)
query_components = parse_qs(parsed_path.query)
# Affiche les informations dans la console
print("Received GET request:")
print(f"Path: {self.path}")
print("Query parameters:")
for key, values in query_components.items():
for value in values:
print(f" {key}: {value}")
# Prépare la réponse (simple pour le client)
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b"<html><body><h1>GET request received</h1></body></html>")
def do_POST(self):
# Récupère la longueur des données envoyées
content_length = int(self.headers['Content-Length'])
# Récupère le corps de la requête
post_data = self.rfile.read(content_length)
# Tente de décoder les données comme JSON
try:
json_data = json.loads(post_data)
print("Received POST request with JSON data:")
print(json.dumps(json_data, indent=4))
except json.JSONDecodeError:
print("Received POST request with invalid JSON")
json_data = {"error": "Invalid JSON"}
# Prépare la réponse (simple pour le client)
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b"<html><body><h1>POST request received</h1></body></html>")
def run(server_class=HTTPServer, handler_class=SimpleHTTPRequestHandler, port=8000):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print(f"Starting server on port {port}...")
httpd.serve_forever()
if __name__ == '__main__':
run()
|
...