Http module

use

procedureextensionexperimental2 overloadsSource

Adds middleware that wraps every request (in the order added), including ones with no route.

Example
hello :: () -> string {
    return "hello";
}

add_header :: (request: *Request, next: Next) -> Response {
    return with_header(next(request), "X-Served-By", "jacket");
}

main :: () {
    app: App;
    defer free_app(*app);

    get(*app, "/hello", hello);
    use(*app, add_header);

    api := test_client(*app);

    response, _ := get(api, "/hello");
    defer close(*response);

    value, found := header(*response, "X-Served-By");
    assert(found && value == "jacket");
}

Doesn't run in the browser (skipped on wasm).

use :: (app: *App, middleware: Middleware)

Parameters

app: *App
middleware: Middleware
use :: (group: *Group($P), middleware: Middleware)

Adds middleware to a group for the routes registered after this call.

Parameters

group: *Group($P)
middleware: Middleware
Example
hello :: () -> string {
    return "hello";
}

add_header :: (request: *Request, next: Next) -> Response {
    return with_header(next(request), "X-Area", "admin");
}

main :: () {
    app: App;
    defer free_app(*app);

    admin := group(*app, "/admin");
    use(admin, add_header);
    get(admin, "/hello", hello);

    api := test_client(*app);

    response, _ := get(api, "/admin/hello");
    defer close(*response);

    value, found := header(*response, "X-Area");
    assert(found && value == "admin");
}

Doesn't run in the browser (skipped on wasm).

See also