Called internally for handling incoming requests from Rserve side. Also useful for testing.

Public fields

path

Request path.

method

Request HTTP method.

headers

Request headers.

cookies

Request cookies.

context

Environment to store any data. Can be used in middlewares.

content_type

Request body content type.

body

Request body.

parameters_query

Request query parameters.

parameters_body

Request body parameters.

parameters_path

List of parameters extracted from templated path after routing. For example if we have some handler listening at /job/{job_id} and we are receiving request at /job/1 then parameters_path will be list(job_id = "1").
It is important to understand that parameters_path will be available (not empty) only after request will reach handler.
This effectively means that parameters_path can be used inside handler and response middleware (but not request middleware!).

files

Structure which contains positions and lengths of files for the multipart body.

decode

Function to decode body for the specific content type.

Active bindings

id

Automatically generated UUID for each request. Read only.

date

Request Date header converted to POSIXct.

accept

Splitted Accept request header.

accept_json

Request accepts JSON response.

accept_xml

Request accepts XML response.

Methods


Method new()

Creates Request object

Usage

Request$new(
  path = "/",
  method = c("GET", "HEAD", "POST", "PUT", "DELETE", "CONNECT", "OPTIONS", "TRACE",
    "PATCH"),
  parameters_query = list(),
  parameters_body = list(),
  headers = list(),
  body = NULL,
  cookies = list(),
  content_type = NULL,
  decode = NULL,
  ...
)

Arguments

path

Character with requested path. Always starts with /.

method

Request HTTP method.

parameters_query

A named list with URL decoded query parameters.

parameters_body

A named list with URL decoded body parameters. This field is helpful when request is a urlencoded form or a multipart form.

headers

Request HTTP headers represented as named list.

body

Request body. Can be anything and in conjunction with content_type defines how HTTP body will be represented.

cookies

Cookies represented as named list. Note that cookies should be provided explicitly - they won't be derived from headers.

content_type

HTTP content type. Note that content_type should be provided explicitly - it won't be derived from headers.

decode

Function to decode body for the specific content type.

...

Not used at this moment.


Method set_id()

Set request id.

Usage

Request$set_id(id = uuid::UUIDgenerate(TRUE))

Arguments

id

Request id.


Method reset()

Resets request object. This is not useful for end user, but useful for RestRserve internals - resetting R6 class is much faster then initialize it.

Usage

Request$reset()


Method get_header()

Get HTTP response header value. If requested header is empty returns default.

Usage

Request$get_header(name, default = NULL)

Arguments

name

Header field name.

default

Default value if header does not exists.

Returns

Header field values (character string).


Method get_param_query()

Get request query parameter by name.

Usage

Request$get_param_query(name)

Arguments

name

Query parameter name.

Returns

Query parameter value (character string).


Method get_param_body()

Get request body parameter by name.

Usage

Request$get_param_body(name)

Arguments

name

Body field name.

Returns

Body field value.


Method get_param_path()

Get templated path parameter by name.

Usage

Request$get_param_path(name)

Arguments

name

Path parameter name.

Returns

Path parameter value.


Method get_file()

Extract specific file from multipart body.

Usage

Request$get_file(name)

Arguments

name

Body file name.

Returns

Raw vector with filname and content-type attributes.


Method print()

Print method.

Usage

Request$print()


Method clone()

The objects of this class are cloneable with this method.

Usage

Request$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

# init simply request
rq = Request$new(
  path = "/",
  parameters_query = list(
    "param1" = "value1",
    "param2" = "value2"
  ),
  headers = list(
    "Content-encoding" = "identity",
    "Custom-field" = "value"
  ),
  cookies = list(
    "sessionId" = "1"
  )
)
# get request UUID
rq$id
#> [1] "af1c4bfc-fd26-11ee-98b2-0050569e8e3c"
# get content accept
rq$accept
#> [1] "*/*"
# get request content type
rq$content_type
#> NULL
# get header by name (lower case)
rq$get_header("custom-field")
#> [1] "value"
# get query param by name
rq$get_param_query("param1")
#> [1] "value1"
# print request
rq
#> <RestRserve Request>
#>   method: GET
#>   path: /
#>   accept: */*
#>   content-type:
#>   <Query Parameters>
#>     param1: value1
#>     param2: value2
#>   <Headers>
#>     content-encoding: identity
#>     custom-field: value
#>   <Cookies>
#>     sessionid: 1