Módulos cliente_http y servidor_web — HTTP/1.1

Archivos: stdlib/std/cliente_http.fa, stdlib/std/servidor_web.fa

¿Por qué existen?

Proveen funcionalidad HTTP/1.1 completa tanto para cliente como para servidor. Permiten hacer requests HTTP a APIs web, y también servir contenido web desde programas Forja.

Módulo cliente_http — Cliente HTTP/1.1

FunciónDescripción
http_get(url)Realiza una petición GET
http_post(url, cuerpo, tipo)Realiza una petición POST con cuerpo
http_put(url, cuerpo, tipo)Realiza una petición PUT
http_delete(url)Realiza una petición DELETE
http_patch(url, cuerpo, tipo)Realiza una petición PATCH
http_personalizado(metodo, url, headers, cuerpo)Request HTTP con método y headers personalizados

Cada función retorna un mapa con las claves: codigo (código de estado HTTP), cuerpo (respuesta como texto), y headers (mapa de headers de respuesta).

Módulo servidor_web — Servidor Web

FunciónDescripción
servidor_iniciar(puerto, manejador)Inicia un servidor web en el puerto especificado
servidor_detener(servidor)Detiene el servidor web
respuesta_html(cuerpo, codigo)Crea una respuesta HTTP con contenido HTML
respuesta_json(datos, codigo)Crea una respuesta HTTP con contenido JSON
respuesta_texto(texto, codigo)Crea una respuesta HTTP con texto plano
respuesta_redireccion(url)Crea una respuesta de redirección (301/302)
archivo_estatico(ruta)Sirve un archivo estático con el tipo MIME adecuado

Ejemplo: Cliente HTTP

📄 api_cliente.fa
// Consultar una API REST
importar cliente_http

variable respuesta = cliente_http.http_get("https://api.github.com/users/gaucho")
escribir_linea("Código: " + respuesta["codigo"])
escribir_linea("Cuerpo: " + respuesta["cuerpo"])

Ejemplo: Servidor Web

📄 servidor.fa
importar servidor_web

funcion manejador(solicitud) &brace;
    variable html = "

Hola desde Forja!

"
retornar servidor_web.respuesta_html(html, 200) } escribir_linea("Servidor en http://localhost:8080") servidor_web.iniciar(8080, manejador)

Casos de uso

💡 Alternativas: Para HTTP/2 usá cliente_h2.fa / servidor_h2.fa. Para HTTP/3 usá cliente_h3.fa. Estos ofrecen mejor rendimiento y multiplexación.