Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type APIModule ¶ added in v0.1.0
type APIModule interface {
model.ModuleNaming // aporta ModelName() — identidad
MountAPI(r Router)
}
APIModule es un módulo que expone una API de servidor. Lo consume el punto de entrada del servidor (!wasm): le pasa el Router del host y el módulo registra sus propias rutas/handlers. Como Router es isomórfico, el módulo nunca importa net/http para describir su API. El transporte concreto (subida binaria, otro protocolo montado como ruta) es decisión interna del módulo.
type Context ¶ added in v0.1.0
type Context interface {
Method() string
Path() string
Body() []byte
GetHeader(key string) string
SetHeader(key, value string)
WriteStatus(code int)
Write(b []byte) (int, error)
// Valores de ámbito de petición (middleware pasa datos al handler siguiente).
SetValue(key string, v any)
Value(key string) any
// Cookies isomórficas.
SetCookie(c Cookie) // escribe una cookie en la respuesta
Cookie(name string) (Cookie, bool) // lee una cookie de la petición; ok=false si no está
// Identidad de ámbito de petición. Un middleware de autenticación registra
// quién es el llamador; los handlers y módulos montados la leen.
SetUserID(id string) // registra la identidad autenticada (id "" = anónimo)
UserID() string // lee la identidad; "" si no hay sesión válida
}
Context es la abstracción mínima que ve un handler: petición → respuesta. Idéntica firma en el objetivo nativo (!wasm) y en el objetivo edge/wasm.
type Cookie ¶ added in v0.1.1
type Cookie struct {
Name string
Value string
Path string
Domain string
MaxAge int // >0 segundos; 0 = sesión; <0 = borrar ahora
Secure bool
HttpOnly bool
SameSite SameSite
}
Cookie es la representación isomórfica de una cookie HTTP. No referencia net/http: cada implementador concreto la mapea a su transporte (net/http.Cookie en nativo; cabecera Set-Cookie en edge/wasm).
type HandlerFunc ¶ added in v0.1.0
type HandlerFunc func(Context)
HandlerFunc es la unidad de despacho: recibe un Context y responde sobre él.
type Middleware ¶ added in v0.1.0
type Middleware func(HandlerFunc) HandlerFunc
Middleware envuelve un handler para añadir lógica transversal (auth, logging). Operar SOLO sobre Context — nunca sobre tipos concretos de transporte.
type Route ¶ added in v0.1.1
type Route interface {
// Requires ata un permiso RBAC a la ruta: el par (resource, action). action es string,
// coincidiendo con la fuente de verdad user.Permission.Action string. Legible y
// extensible: "write", "read", "orders:export" — no un byte críptico.
Requires(resource string, action string) Route
// Public marca la ruta como accesible sin identidad. La ausencia de este
// marcador (y de Requires) implica que la ruta es privada por defecto.
Public() Route
}
Route describe una ruta ya registrada y permite anotarla. Lo devuelve cada método de registro del Router. Las anotaciones son declarativas: el contrato no las aplica — cada implementador concreto (serverd nativo, runtime edge) las hace cumplir.
type RouteInfo ¶ added in v0.1.1
type RouteInfo struct {
Method string
Path string
Resource string // "" = ruta pública (sin RBAC)
Action string
Public bool // true = accesible sin identidad
}
RouteInfo es la vista de solo lectura de una ruta registrada — para introspección.
type Router ¶
type Router interface {
Get(path string, h HandlerFunc) Route
Post(path string, h HandlerFunc) Route
Put(path string, h HandlerFunc) Route
Delete(path string, h HandlerFunc) Route
Options(path string, h HandlerFunc) Route
Handle(method, path string, h HandlerFunc) Route
Stream(path string, h StreamFunc) Route
Socket(path string, h SocketFunc) Route
Use(m ...Middleware)
// Routes enumera las rutas registradas y sus metadatos.
Routes() []RouteInfo
}
Router es aquello sobre lo que un módulo registra sus rutas. Un implementador concreto (servidor nativo, runtime edge) satisface esta interfaz; los módulos y los hosts solo la consumen.
type SameSite ¶ added in v0.1.1
type SameSite int
SameSite tipa la política SameSite — estado ilegal no representable (no un string).
type Socket ¶ added in v0.1.0
Socket es la conexión bidireccional ya upgradeada (WebSocket). Abstracción isomórfica: no toca mecanismos de upgrade concretos.
type SocketFunc ¶ added in v0.1.0
type SocketFunc func(Socket)
SocketFunc es un handler que recibe un Socket tipado.
type StreamFunc ¶ added in v0.1.0
type StreamFunc func(Streamer)
StreamFunc es un handler que recibe un Streamer tipado.