8 Page: Short-hand for Common Patterns
The Web Server provides a simple utility library for building Web applications that consistent mostly of send/suspend/dispatch-created pages and request handling.
When used inside
page syntactically, a rename transformer for the procedure embedding function; otherwise, a syntax error.
A simple example:
Similarly, many Web applications make use almost exclusively of
functions that are arguments to embed/url and immediately
invoke send/suspend/dispatch.
The
lambda/page and
define/page automate this by
expanding to functions that accept a request as the first argument
(followed by any arguments specified in
formals) and
immediately wrap their body in
page. This functions also
cooperate with
get-binding by binding the request to the
current-request parameter.
The binding interface of web-server/http is powerful,
but subtle to use conveniently due to its protection against hostile
clients.
The
get-binding(s) interface attempts to resolve this by
providing a powerful interface with convenient defaults.
get-binding extracts the first binding of a form input from a
request, while get-bindings extracts them all.
They accept a form identifier (id) as either a byte string, a
string, or a symbol. In each case, the user input is compared in a
case-sensitive way with the form input.
They accept an optional request argument (req) that defaults
to the value of the current-request parameter used by
lambda/page and define/page.
Finally, they accept an optional keyword argument (format)
that specifies the desired return format. The default,
'string, produces a UTF-8 string (or #f if the byte
string cannot be converted to UTF-8.) The 'bytes format
always produces the raw byte string. The 'file format
produces the file upload content (or #f if the form input was
not an uploaded file.) The 'binding format produces the
binding object.