Learn R Programming

RestRserve (version 0.2.0.2)

Request: Creates request object

Description

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

Arguments

Format

R6::R6Class object.

Construction

Request$new(path = "/",
 method = c("GET", "HEAD", "POST", "PUT", "DELETE", "CONNECT", "OPTIONS", "TRACE", "PATCH"),
 parameters_query = list(),
 parameters_body = list(),
 headers = list(),
 body = list(),
 cookies = list(),
 content_type = "text/plain",
 decode = NULL,
 ...)
  • path :: character(1) Character with requested path. Always starts with /.

  • method :: character(1) Request HTTP method.

  • parameters_path :: named list() 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!).

  • parameters_query :: named list() A named list with URL decoded query parameters.

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

  • headers :: named list() Request HTTP headers represented as named list.

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

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

  • content_type :: character(1) HTTP content type. Note that content_type should be provided explicitly - it won't be derived from headers.

  • decode :: function Function to decode body for the specific content type.

Fields

  • path :: character(1) Request path.

  • method :: character(1) Request HTTP method.

  • headers :: named list() Request headers.

  • parameters_query :: named list() Request query parameters.

  • parameters_body :: named list() Request body parameters.

  • content_type :: character(1) Request body content type.

  • body :: raw() | named character() Request body.

  • cookies :: named list() Request cookies.

  • files :: named list() Structure which contains positions and lengths of files for the multipart body.

  • context :: environment() Environment to store any data. Can be used in middlewares.

  • id :: character(1) Automatically generated UUID for each request. Read only.

  • date :: POSIXct(1) Request Date header converted to POSIXct.

  • accept :: character() Split Accept request header.

  • accept_json :: logical(1) Request accepts JSON response.

  • accept_xml :: logical(1) Request accepts XML response.

Methods

  • 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.

  • get_header(name, default = NULL) character(1), character(1) -> character() Get HTTP response header value. If requested header is empty returns default.

  • get_param_query(name) character(1) -> character(1) Get request query parameter by name.

  • get_param_body(name) character(1) -> character(1) Get request body parameter by name.

  • get_param_path(name) character(1) -> character(1) Get templated path parameter by name.

  • get_file(name) character(1) -> raw() Extract specific file from multipart body.

See Also

Response Application

Examples

Run this code
# NOT RUN {
# 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
# get content accept
rq$accept
# get request content type
rq$content_type
# get header by name (lower case)
rq$get_header("custom-field")
# get query param by name
rq$get_param_query("param1")
# print request
rq

# }

Run the code above in your browser using DataLab