Este proyecto tiene como objetivo brindar una comprensión práctica del lenguaje Java, específicamente en el contexto del manejo de solicitudes HTTP mediante TCP y sockets. Se trata de un servidor HTTP simple pero funcional.
El archivo clave para ejecutar el servidor se encuentra en src/main/java/App/Main.java.
public static void main(String[] args) {
try {
Serve server = new Serve(8081);
server.addRoute(HttpMethods.GET, "/test",
(request) -> new HttpResponse.Builder()
.setStatusCode(200)
.addHeader("Content-Type", "text/html")
.setEntity("<HTML> <P> Hello There... </P> </HTML>")
.build());
server.start();
} catch (Exception e) {
System.out.println("Hubo un error en el servidor: " + e.getMessage());
}
}La clase Serve permite configurar y ejecutar el servidor web. Su constructor requiere un parámetro Integer que indica el puerto:
Serve server = new Serve(8081);Como cualquier servidor HTTP, se necesitan rutas. Para agregar rutas, se utiliza el método addRoute de la clase Serve, que toma tres parámetros y no retorna nada:
void com.server.lib.Serve.addRoute(HttpMethods method, String Route, RequestRunner callback)-
El primer parámetro es un
EnumllamadoHttpMethods, que contiene los métodos HTTP disponibles:GET,POST,PUTyDELETE. -
El segundo parámetro, de tipo
String, representa la ruta. -
El tercer parámetro es una función anónima que se ejecuta cuando se visita la ruta especificada.
Cuando una ruta se visita, se ejecuta la función anónima que recibe un objeto HttpRequest. Con este objeto, puedes acceder a datos del request, como la URI, los headers y el método.
La construcción de la respuesta se realiza a través de la clase HttpResponse.Builder(), que ofrece métodos encadenados:
setStatusCode(int statusCode): Define el estado de la respuesta.addHeader(String keyName, String value): Agrega headers a la respuesta.setEntity(Object entity): Define el cuerpo de la respuesta (puede ser un String HTML u otro contenido).
Al finalizar, el método build() construye la respuesta y devuelve un objeto HttpResponse.
Una vez configuradas las rutas, el servidor se inicia mediante el método start() de la clase Serve:
serve.start()¡El servidor estará en funcionamiento!