1
+ # server.py
2
+ from http .server import BaseHTTPRequestHandler , HTTPServer
3
+
4
+ class RequestHandler (BaseHTTPRequestHandler ):
5
+ """
6
+ Manejador de solicitudes HTTP que procesa las peticiones GET entrantes.
7
+ Hereda de BaseHTTPRequestHandler para implementar un servidor HTTP básico.
8
+ """
9
+
10
+ def __init__ (self , * args , route_handler = None , ** kwargs ):
11
+ """
12
+ Inicializa el manejador de solicitudes.
13
+
14
+ Args:
15
+ route_handler: Función que maneja el enrutamiento de las solicitudes
16
+ *args: Argumentos posicionales adicionales
17
+ **kwargs: Argumentos de palabra clave adicionales
18
+ """
19
+ self .route_handler = route_handler
20
+ super ().__init__ (* args , ** kwargs )
21
+
22
+ def do_GET (self ):
23
+ """
24
+ Procesa las solicitudes GET entrantes.
25
+ Obtiene la ruta de la solicitud y la pasa al manejador de rutas.
26
+ Envía la respuesta correspondiente al cliente.
27
+ """
28
+ # Obtener la ruta de la solicitud
29
+ path = self .path
30
+
31
+ # Llamar al manejador de rutas para obtener la respuesta
32
+ if self .route_handler :
33
+ response = self .route_handler (path )
34
+ else :
35
+ response = "404 Not Found"
36
+
37
+ # Configurar la respuesta HTTP
38
+ self .send_response (200 if response != "404 Not Found" else 404 )
39
+ self .send_header ("Content-Type" , "text/plain" )
40
+ self .end_headers ()
41
+
42
+ # Enviar la respuesta al cliente
43
+ self .wfile .write (response .encode ("utf-8" ))
44
+
45
+ def start_server (port = 8000 , route_handler = None ):
46
+ """
47
+ Inicia el servidor HTTP en el puerto especificado.
48
+
49
+ Args:
50
+ port: Puerto en el que se ejecutará el servidor (por defecto 8000)
51
+ route_handler: Función que maneja el enrutamiento de las solicitudes
52
+ """
53
+ # Crear una función para inicializar el servidor con un route_handler personalizado
54
+ def handler (* args , ** kwargs ):
55
+ RequestHandler (* args , route_handler = route_handler , ** kwargs )
56
+
57
+ # Configurar y ejecutar el servidor
58
+ server_address = ('' , port )
59
+ httpd = HTTPServer (server_address , handler )
60
+ print (f"Servidor corriendo en el puerto { port } ..." )
61
+ httpd .serve_forever ()
0 commit comments