Parsers are used in Plumber to transform request body received by the API. Extra parameters may be provided to parser functions when enabling them on router. This will allow for non-default behavior.
Usage
parser_form()
parser_json(...)
parser_geojson(...)
parser_text(parse_fn = identity)
parser_yaml(...)
parser_csv(...)
parser_tsv(...)
parser_read_file(read_fn = readLines)
parser_rds(...)
parser_feather(...)
parser_parquet(...)
parser_octet()
parser_multi()
parser_none()
Arguments
- ...
parameters supplied to the appropriate internal function
- parse_fn
function to further decode a text string into an object
- read_fn
function used to read a the content of a file. Ex:
readRDS()
Details
Parsers are optional. When unspecified, only default endpoint parsers are enabled.
You can use @parser NAME
tag to enable parser on endpoint.
Multiple parsers can be enabled on the same endpoint using multiple @parser NAME
tags.
User should be aware that rds
parsing should only be done from a
trusted source. Do not accept rds
files blindly.
See registered_parsers()
for a list of registered parsers names.
Functions
parser_form()
: Form query string parserparser_json()
: JSON parser. Seejsonlite::parse_json()
for more details. (Defaults to usingsimplifyVectors = TRUE
)parser_geojson()
: GeoJSON parser. Seegeojsonsf::geojson_sf()
for more details.parser_text()
: Helper parser to parse plain textparser_yaml()
: YAML parser. Seeyaml::yaml.load()
for more details.parser_csv()
: CSV parser. Seereadr::read_csv()
for more details.parser_tsv()
: TSV parser. Seereadr::read_tsv()
for more details.parser_read_file()
: Helper parser that writes the binary body to a file and reads it back again usingread_fn
. This parser should be used when reading from a file is required.parser_rds()
: RDS parser. SeereadRDS()
for more details.parser_feather()
: feather parser. Seearrow::read_feather()
for more details.parser_parquet()
: parquet parser. Seearrow::read_parquet()
for more details.parser_octet()
: Octet stream parser. Returns the raw content.parser_multi()
: Multi part parser. This parser will then parse each individual body with its respective parser. When this parser is used,req$body
will contain the updated output fromwebutils::parse_multipart()
by adding theparsed
output to each part. Each part may contain detailed information, such asname
(required),content_type
,content_disposition
,filename
, (raw, original)value
, andparsed
(parsedvalue
). When performing Plumber route argument matching, each multipart part will match itsname
to theparsed
content.parser_none()
: No parser. Will not process the postBody.
Examples
if (FALSE) { # \dontrun{
# Overwrite `text/json` parsing behavior to not allow JSON vectors to be simplified
#* @parser json list(simplifyVector = FALSE)
# Activate `rds` parser in a multipart request
#* @parser multi
#* @parser rds
pr <- Plumber$new()
pr$handle("GET", "/upload", function(rds) {rds}, parsers = c("multi", "rds"))
} # }