Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
results= 'markup'
)
## -----------------------------------------------------------------------------
library(RestRserve)
app = Application$new(content_type = "application/json")
backend = BackendRserve$new()
app$add_get("/foo", function(.req, .res) {
body = RestRserve::to_json(.req$parameters_query)
.res$set_body(body)
# specify that there is no need to specially encode the body as
# we've already set it to a JSON
.res$encode = identity
})
## -----------------------------------------------------------------------------
req = Request$new(path = "/foo", method = "GET", parameters_query = list(key1 = "value1", key2 = "value2"))
resp = app$process_request(req)
resp$body
## -----------------------------------------------------------------------------
logging_middleware = Middleware$new(
process_request = function(.req, .res) {
msg = list(
middleware = "logging_middleware",
request_id = .req$id,
request = list(headers = .req$headers, method = .req$method, path = .req$path),
timestamp = Sys.time()
)
msg = RestRserve::to_json(msg)
cat(msg, sep = '\n')
},
process_response = function(.req, .res) {
msg = list(
middleware = "logging_middleware",
# we would like to have a request_id for each response in order to correlate
# request and response
request_id = .req$id,
response = list(headers = .res$headers, status_code = .res$status_code, body = .res$body),
timestamp = Sys.time()
)
msg = to_json(msg)
cat(msg, sep = '\n')
},
id = "logging"
)
app$append_middleware(logging_middleware)
## -----------------------------------------------------------------------------
req = Request$new(path = "/foo", method = "GET", parameters_query = list(key1 = "value1", key2 = "value2"))
resp = app$process_request(req)
## -----------------------------------------------------------------------------
req = Request$new(path = "/foo2", method = "GET", parameters_query = list(key1 = "value1", key2 = "value2"))
resp = app$process_request(req)
## -----------------------------------------------------------------------------
gzip_middleware = Middleware$new(
process_request = function(.req, .res) {
msg = list(
middleware = "gzip_middleware",
request_id = .req$id,
timestamp = Sys.time()
)
msg = to_json(msg)
cat(msg, sep = '\n')
},
process_response = function(.req, .res) {
# compress body
.res$set_header("Content-encoding", "gzip")
.res$set_body(memCompress(.res$body, "gzip"))
msg = list(
middleware = "gzip_middleware",
request_id = .req$id,
timestamp = Sys.time()
)
msg = to_json(msg)
cat(msg, sep = '\n')
},
id = "gzip"
)
app$append_middleware(gzip_middleware)
## -----------------------------------------------------------------------------
req = Request$new(path = "/foo", method = "GET", parameters_query = list(key1 = "value1", key2 = "value2"))
resp = app$process_request(req)
## -----------------------------------------------------------------------------
rawToChar(memDecompress(resp$body, "gzip"))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.