Blame


1 1106be50 2023-12-21 op The http module implements a http server. Functions (handlers) can be
2 1106be50 2023-12-21 op associated to a specific route using [[handle]]. Routes are matched
3 1106be50 2023-12-21 op per [[fnmatch::fnmatch]].
4 1106be50 2023-12-21 op
5 1106be50 2023-12-21 op The http module relies on the event loop [[ev]].
6 1106be50 2023-12-21 op
7 1106be50 2023-12-21 op Sample code:
8 1106be50 2023-12-21 op
9 1106be50 2023-12-21 op use ev;
10 1106be50 2023-12-21 op use fmt;
11 1106be50 2023-12-21 op use http;
12 1106be50 2023-12-21 op
13 1106be50 2023-12-21 op fn homepage(
14 1106be50 2023-12-21 op req: *http::request,
15 1106be50 2023-12-21 op res: *http::reswriter
16 1106be50 2023-12-21 op ) (void | io::error) = {
17 1106be50 2023-12-21 op http::reply(req, res, 200, "OK")?;
18 1106be50 2023-12-21 op http::header(res, "Content-Type", "text/plain")?;
19 1106be50 2023-12-21 op fmt::fprintln(res, "Hello, world!")?;
20 1106be50 2023-12-21 op };
21 1106be50 2023-12-21 op
22 1106be50 2023-12-21 op fn page2(...) // ...
23 1106be50 2023-12-21 op
24 1106be50 2023-12-21 op export fn main() void = {
25 1106be50 2023-12-21 op let sock = // ...
26 1106be50 2023-12-21 op
27 1106be50 2023-12-21 op http::handle("/", &homepage);
28 1106be50 2023-12-21 op http::handle("/2", &page2);
29 1106be50 2023-12-21 op
30 80ace363 2023-12-22 op http::listen_sock(sock, null);
31 1106be50 2023-12-21 op ev::mainloop()!;
32 1106be50 2023-12-21 op };