# NOT RUN {
# init logger
app_logger = Logger$new()
# set log level for the middleware
app_logger$set_log_level("debug")
# set logger name
app_logger$set_name("MW Logger")
# init middleware to logging
mw = Middleware$new(
process_request = function(rq, rs) {
app_logger$info(sprintf("Incomming request (id %s): %s", rq$id, rq$path))
},
process_response = function(rq, rs) {
app_logger$info(sprintf("Outgoing response (id %s): %s", rq$id, rs$status))
},
id = "awesome-app-logger"
)
# init application
app = Application$new(middleware = list(mw))
# set internal log level
app$logger$set_log_level("error")
# define simply request handler
status_handler = function(rq, rs) {
rs$set_body("OK")
rs$set_content_type("text/plain")
rs$set_status_code(200L)
}
# add route
app$add_get("/status", status_handler, "exact")
# add static file handler
desc_file = system.file("DESCRIPTION", package = "RestRserve")
# add route
app$add_static("/desc", desc_file, "text/plain")
# define say message handler
say_handler = function(rq, rs) {
who = rq$parameters_path[["user"]]
msg = rq$parameters_query[["message"]]
if (is.null(msg)) msg <- "Hello"
rs$set_body(paste(who, "say", dQuote(msg)))
rs$set_content_type("text/plain")
rs$set_status_code(200L)
}
# add route
app$add_get("/say/{user}", say_handler, "regex")
# print application info
app
# test app
# simulate requests
not_found_rq = Request$new(path = "/no")
status_rq = Request$new(path = "/status")
desc_rq = Request$new(path = "/desc")
say_rq = Request$new(path = "/say/anonym", parameters_query = list("message" = "Hola"))
# process prepared requests
app$process_request(not_found_rq)
app$process_request(status_rq)
app$process_request(desc_rq)
app$process_request(say_rq)
# run app
backend = BackendRserve$new()
# }
# NOT RUN {
backend$start(app, 8080)
# }
# NOT RUN {
# }
Run the code above in your browser using DataLab