This class wraps all functionality related to extracting information from a
http request. Much of the functionality is inspired by the Request class in
Express.js, so the documentation
for this will complement this document. As
reqres is build on top of the
Request object is initialized from a Rook-compliant object. This will
often be the request object provided by the
httpuv framework. While it
shouldn't be needed, the original Rook object is always accessible and can be
modified, though any modifications will not propagate to derived values in
Request object (e.g. changing the
HTTP_HOST element of the Rook
object will not change the
host field of the
Request object). Because of
this, direct manipulation of the Rook object is generally discouraged.
as.Request(x, ...) is.Request(x)
An object coercible to a
Parameters passed on to
Request object (for
as.Request()) or a logical indicating whether
the object is a
A new 'Request'-object is initialized using the
new() method on the
||The rook request that the new object should wrap|
|| Is this request trusted blindly. If
The following fields are accessible in a
A logical indicating whether the request is trusted. Mutable
A string indicating the request method (in lower case, e.g. 'get', 'put', etc.). Immutable
An object holding the body of the request. This is an empty
string by default and needs to be populated using the
(this is often done using a body parser that accesses the Rook$input
Access a named list of all cookies in the request. These have been URI decoded. Immutable
Access a named list of all headers in the request. In order
to follow R variable naming standards
- have been substituted with
get_header() method to lookup based on the correct header name.
Return the domain of the server given by the "Host" header if
trust == FALSE. If
trust == true returns the
Returns the remote address of the request if
trust == FALSE.
trust == TRUE it will instead return the first value of the
X-Forwarded-For header. Immutable
trust == TRUE it will return the full list of ips in the
X-Forwarded-For header. If
trust == FALSE it will return an empty
Returns the protocol (e.g. 'http') used for the request.
trust == TRUE it will use the value of the
The mount point of the application receiving this request. Can be empty if the application is mounted on the server root. Immutable
The part of the url following the root. Defines the local target of the request (independent of where it is mounted). Immutable
The full URL of the request. Immutable
The query string of the request (anything following "?" in the URL) parsed into a named list. The query has been url decoded and "+" has been substituted with space. Multiple queries are expected to be separated by either "&" or "|". Immutable
The unparsed query string of the request, including
"?". If no query string exists it will be
"" rather than
A logical indicating whether the
XMLHttpRequest thus indicating that the request was performed using
A logical indicating whether the request was performed using
a secure connection, i.e.
protocol == 'https'. Immutable
The original object used to create the
Request object. As
reqres currently only works with rook this will always return the original
rook object. Immutable, though the content of the rook object itself might
be manipulated as it is an environment.
Response object has been created for this request
it is accessible through this field. Immutable
The following methods are available in a
Sets the content of the request body. This method
should mainly be used in concert with a body parser that reads the
Sets the cookies of the request. The cookies are automatically parsed and populated, so this method is mainly available to facilitate cookie signing and encryption
Get the header of the specified name.
Given a vector of response content types it returns
the preferred one based on the
Given a vector of possible character
encodings it returns the preferred one based on the
Given a vector of possible content
encodings (usually compression algorithms) it selects the preferred one
based on the
Accept-Encoding header. If there is no match it will return
"identity" signaling no compression.
Given a vector of possible content
languages it selects the best one based on the
Queries whether the body of the request is in a given
format by looking at the
Content-Type header. Used for selecting the best
Creates a new
Response object from the request
parse(..., autofail = TRUE)
Based on provided parsers it selects
the appropriate one by looking at the
Content-Type header and assigns the
result to the request body. A parser is a function accepting a raw vector,
and a named list of additional directives,
and returns an R object of any kind (if the parser knows the input to be
plain text, simply wrap it in
rawToChar()). If the body is compressed, it
will be decompressed based on the
Content-Encoding header prior to passing
it on to the parser. See parsers for a list of pre-supplied parsers.
Parsers are either supplied in a named list or as named arguments to the
parse method. The names should correspond to mime types or known file
autofail = TRUE the response will be set with the correct
error code if parsing fails.
TRUE if parsing was
FALSE if not
parse_raw(autofail = TRUE)
This is a simpler version of the
parse() method. It will attempt to decompress the body and set the
field to the resulting raw vector. It is then up to the server to decide how
to handle the payload. It returns
TRUE if successful and
Prints a HTTP representation of the request to the output stream.
Request$new(rook, trust = FALSE)
Request$parse(..., autofail = TRUE)
Request$parse_raw(autofail = TRUE)
The objects of this class are cloneable with this method.
Request$clone(deep = FALSE)
Whether to make a deep clone.
Response for handling http responses
fake_rook <- fiery::fake_request( 'http://example.com/test?id=34632&question=who+is+hadley', content = 'This is an elaborate ruse', headers = list( Accept = 'application/json; text/*', Content_Type = 'text/plain' ) ) req <- Request$new(fake_rook) # Get full URL req$url # Get list of query parameters req$query # Test if content is text req$is('txt') # Perform content negotiation for the response req$accepts(c('html', 'json', 'txt')) # Cleaning up connections rm(fake_rook, req) gc()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.