Next: , Previous: HTTP Headers, Up: Web


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.