HTTP¶
La capa HTTP cubre requests, responses, headers, cookies y serializacion basica.
Request¶
Request representa una peticion ya parseada:
methodpathquery_stringqueryheadersbodyclienttls
Helpers utiles:
body_text = request.text()
payload = request.json()
Response¶
Response soporta cuatro formas comunes:
Response.text("ok")
Response.html("<h1>hola</h1>")
Response.json({"ok": True})
Response.stream(iter(["a", "b", "c"]), content_type="text/plain")
Response.stream devuelve una respuesta en streaming con soporte para generadores, iterables y objetos con read().
Enrutado¶
App.view() y App.api() usan el router interno:
from wsbuilder import App, Response
app = App(cors_allow_origin="*")
@app.view("/hello")
def hello(_request):
return Response.text("hola")
@app.api("/api/health")
def health(_request):
return {"ok": True}
CORS y OPTIONS¶
App.dispatch() responde OPTIONS automaticamente cuando detecta una ruta registrada.
Si cors_allow_origin esta definido, la respuesta incluye:
Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-HeadersVary: Origincuando no se usa*
Headers y cookies¶
La libreria trae helpers para nombres, lectura y escritura:
from wsbuilder import build_set_cookie, get_cookie, get_header, has_header, normalize_header_name, set_header
Usos comunes:
- leer
Authorization,Content-Typeo cualquier header normalizado. - construir
Set-CookieconHttpOnly,Secure,SameSiteyMax-Age. - inyectar headers de respuesta sin reescribir diccionarios manualmente.
Servidor HTTP¶
HTTPServer conecta el socket con App.dispatch(). Si quieres ejecutar tu app dentro de otro proceso,
usa app.run(host, port) o integra el server en tu propio bootstrap.
Ejemplo compacto¶
from wsbuilder import App, Response
app = App()
@app.view("/sum")
def sum_view(request):
a = int(request.query.get("a", "0"))
b = int(request.query.get("b", "0"))
return Response.json({"result": a + b})
Puntos de extension¶
parse_http_requestpara parseo de requests en bruto.send_http_responsesi necesitas escribir respuestas manualmente.parse_query_stringpara utilidades ligeras de query strings.