std.web
Generated by
sema docfromstdlib/sema/web.sema. Import withfrom std.web import …. For a narrative introduction see std.web.
std.web — a tiny FastAPI-shaped HTTP layer over the native http.serve seam (§5.34).
Framework ergonomics without a framework: write handlers (req) -> Response,
register them on a Router by method + path (with {param} path segments), and
serve. The request is the native dict {method, path, query, body, headers}
(headers lowercased) plus a params dict of captured path segments. A handler
returns a Response built with the ok/json_status/text/error helpers.
from std.web import router, get, post, serve, ok, error
def health(req: dict) -> Response !{}: return ok({"status": "ok"})
def serve_api(port: int) -> None !{net.listen}: app = router() get(app, "/healthz", health) post(app, "/search", search_handler) serve(app, port)serve/dispatch carry the standard web effect envelope (net + model + fs +
clock + observe + ffi + env), so a handler may perform any of those; the caller
declares the same (or wider) row. A true @get("/path") decorator that registers
at load time needs a runtime hook (like @provides) and is a deferred SDK add —
explicit registration is the reliable, framework-free equivalent.
struct Response
Section titled “struct Response”Fields
| field | type | descriptor |
|---|---|---|
status | int | |
content_type | str | |
headers | dict | |
body | str |
struct Route
Section titled “struct Route”Fields
| field | type | descriptor |
|---|---|---|
method | str | |
path | str | |
handler | any |
struct Router
Section titled “struct Router”Fields
| field | type | descriptor |
|---|---|---|
routes | list[Route] |
def router
Section titled “def router”def router() -> Router !{}Returns Router
Effects !{}
def route
Section titled “def route”def route(app: Router, method: str, path: str, handler: any) -> Router !{}Parameters
| name | type |
|---|---|
app | Router |
method | str |
path | str |
handler | any |
Returns Router
Effects !{}
def get
Section titled “def get”def get(app: Router, path: str, handler: any) -> Router !{}Parameters
| name | type |
|---|---|
app | Router |
path | str |
handler | any |
Returns Router
Effects !{}
def post
Section titled “def post”def post(app: Router, path: str, handler: any) -> Router !{}Parameters
| name | type |
|---|---|
app | Router |
path | str |
handler | any |
Returns Router
Effects !{}
def put
Section titled “def put”def put(app: Router, path: str, handler: any) -> Router !{}Parameters
| name | type |
|---|---|
app | Router |
path | str |
handler | any |
Returns Router
Effects !{}
def delete
Section titled “def delete”def delete(app: Router, path: str, handler: any) -> Router !{}Parameters
| name | type |
|---|---|
app | Router |
path | str |
handler | any |
Returns Router
Effects !{}
def patch
Section titled “def patch”def patch(app: Router, path: str, handler: any) -> Router !{}Parameters
| name | type |
|---|---|
app | Router |
path | str |
handler | any |
Returns Router
Effects !{}
def response
Section titled “def response”def response(status: int, content_type: str, body: str) -> Response !{}Parameters
| name | type |
|---|---|
status | int |
content_type | str |
body | str |
Returns Response
Effects !{}
def ok
Section titled “def ok”def ok(obj: any) -> Response !{}Parameters
| name | type |
|---|---|
obj | any |
Returns Response
Effects !{}
def json_status
Section titled “def json_status”def json_status(status: int, obj: any) -> Response !{}Parameters
| name | type |
|---|---|
status | int |
obj | any |
Returns Response
Effects !{}
def text
Section titled “def text”def text(body: str) -> Response !{}Parameters
| name | type |
|---|---|
body | str |
Returns Response
Effects !{}
def error
Section titled “def error”def error(status: int, message: str) -> Response !{}Parameters
| name | type |
|---|---|
status | int |
message | str |
Returns Response
Effects !{}
def header
Section titled “def header”def header(r: Response, name: str, value: str) -> Response !{}Parameters
| name | type |
|---|---|
r | Response |
name | str |
value | str |
Returns Response
Effects !{}
def clean_path
Section titled “def clean_path”def clean_path(path: str) -> str !{}Parameters
| name | type |
|---|---|
path | str |
Returns str
Effects !{}
def match_path
Section titled “def match_path”def match_path(pattern: str, actual: str) -> any !{}Parameters
| name | type |
|---|---|
pattern | str |
actual | str |
Returns any
Effects !{}
def resp_dict
Section titled “def resp_dict”def resp_dict(r: Response) -> dict !{}Parameters
| name | type |
|---|---|
r | Response |
Returns dict
Effects !{}
def dispatch
Section titled “def dispatch”def dispatch(app: Router, req: dict) -> dict !{net.connect, model.invoke, model.embed, fs.read, clock, observe.record, ffi.call, env.read}Parameters
| name | type |
|---|---|
app | Router |
req | dict |
Returns dict
Effects !{net.connect, model.invoke, model.embed, fs.read, clock, observe.record, ffi.call, env.read}
def serve
Section titled “def serve”def serve(app: Router, port: int) -> None !{net.listen, net.connect, model.invoke, model.embed, fs.read, clock, observe.record, ffi.call, env.read}Parameters
| name | type |
|---|---|
app | Router |
port | int |
Returns None
Effects !{net.listen, net.connect, model.invoke, model.embed, fs.read, clock, observe.record, ffi.call, env.read}
def serve_on
Section titled “def serve_on”def serve_on(app: Router, host: str, port: int) -> None !{net.listen, net.connect, model.invoke, model.embed, fs.read, clock, observe.record, ffi.call, env.read}Parameters
| name | type |
|---|---|
app | Router |
host | str |
port | int |
Returns None
Effects !{net.listen, net.connect, model.invoke, model.embed, fs.read, clock, observe.record, ffi.call, env.read}