7.3.4 HTTP Requests
(use-modules (web request))
The request module contains a data type for HTTP requests. Note that
the body is not part of the request, but the port is. Once you have
read a request, you may read the body separately, and likewise for
writing requests.
— Function:
build-request [
#:method] [
#:uri] [
#:version] [
#:headers] [
#:port] [
#:meta] [
#:validate-headers?]
Construct an HTTP request object. If validate-headers? is true,
the headers are each run through their respective validators.
— Function:
request?
— Function:
request-method
— Function:
request-uri
— Function:
request-version
— Function:
request-headers
— Function:
request-meta
— Function:
request-port
A predicate and field accessors for the request type. The fields are as
follows:
method- The HTTP method, for example,
GET.
uri- The URI as a URI record.
version- The HTTP version pair, like
(1 . 1).
headers- The request headers, as an alist of parsed values.
meta- An arbitrary alist of other data, for example information returned in
the
sockaddr from accept (see Network Sockets and Communication).
port- The port on which to read or write a request body, if any.
— Function:
read-request port [
meta]
Read an HTTP request from port, optionally attaching the given
metadata, meta.
As a side effect, sets the encoding on port to ISO-8859-1
(latin-1), so that reading one character reads one byte. See the
discussion of character sets in "HTTP Requests" in the manual, for more
information.
— Function:
write-request r port
Write the given HTTP request to port.
Returns a new request, whose request-port will continue writing
on port, perhaps using some transfer encoding.
— Function:
read-request-body/latin-1 r
Reads the request body from r, as a string.
Assumes that the request port has ISO-8859-1 encoding, so that the
number of characters to read is the same as the
request-content-length. Returns #f if there was no request
body.
— Function:
write-request-body/latin-1 r body
Write body, a string encodable in ISO-8859-1, to the port
corresponding to the HTTP request r.
— Function:
read-request-body/bytevector r
Reads the request body from r, as a bytevector. Returns #f
if there was no request body.
— Function:
write-request-body/bytevector r bv
Write body, a bytevector, to the port corresponding to the HTTP
request r.
The various headers that are typically associated with HTTP requests may
be accessed with these dedicated accessors. See HTTP Headers, for
more information on the format of parsed headers.
— Function:
request-accept request [
default='()]
— Function:
request-accept-charset request [
default='()]
— Function:
request-accept-encoding request [
default='()]
— Function:
request-accept-language request [
default='()]
— Function:
request-allow request [
default='()]
— Function:
request-authorization request [
default=#f]
— Function:
request-cache-control request [
default='()]
— Function:
request-connection request [
default='()]
— Function:
request-content-encoding request [
default='()]
— Function:
request-content-language request [
default='()]
— Function:
request-content-length request [
default=#f]
— Function:
request-content-location request [
default=#f]
— Function:
request-content-md5 request [
default=#f]
— Function:
request-content-range request [
default=#f]
— Function:
request-content-type request [
default=#f]
— Function:
request-date request [
default=#f]
— Function:
request-expect request [
default='()]
— Function:
request-expires request [
default=#f]
— Function:
request-from request [
default=#f]
— Function:
request-host request [
default=#f]
— Function:
request-if-match request [
default=#f]
— Function:
request-if-modified-since request [
default=#f]
— Function:
request-if-none-match request [
default=#f]
— Function:
request-if-range request [
default=#f]
— Function:
request-if-unmodified-since request [
default=#f]
— Function:
request-last-modified request [
default=#f]
— Function:
request-max-forwards request [
default=#f]
— Function:
request-pragma request [
default='()]
— Function:
request-proxy-authorization request [
default=#f]
— Function:
request-range request [
default=#f]
— Function:
request-referer request [
default=#f]
— Function:
request-te request [
default=#f]
— Function:
request-trailer request [
default='()]
— Function:
request-transfer-encoding request [
default='()]
— Function:
request-upgrade request [
default='()]
— Function:
request-user-agent request [
default=#f]
— Function:
request-via request [
default='()]
— Function:
request-warning request [
default='()]
Return the given request header, or default if none was present.
— Function:
request-absolute-uri r [
default-host] [
default-port]
A helper routine to determine the absolute URI of a request, using the
host header and the default host and port.