A serializer is responsible for translating a generated R value into output
that a remote user can understand. For instance, the serializer_json
serializes R objects into JSON before returning them to the user. The list of
available serializers in plumber is global.
register_serializer(name, serializer, verbose = TRUE)
registered_serializers()The name of the serializer (character string)
The serializer function to be added.
This function should accept arguments that can be supplied when plumb()ing a file.
This function should return a function that accepts four arguments: value, req, res, and errorHandler.
See print(serializer_json) for an example.
Logical value which determines if a message should be printed when overwriting serializers
There are three main building-block serializers:
serializer_headers: the base building-block serializer that is required to have as_attachment() work
serializer_content_type(): for setting the content type. (Calls serializer_headers())
serializer_device(): add endpoint hooks to turn a graphics device on and off in addition to setting the content type. (Uses serializer_content_type())
register_serializer(): Register a serializer with a name
registered_serializers(): Return a list of all registered serializers
# `serializer_json()` calls `serializer_content_type()` and supplies a serialization function
print(serializer_json)
#> function (..., type = "application/json")
#> {
#> serializer_content_type(type, function(val) {
#> toJSON(val, ...)
#> })
#> }
#> <bytecode: 0x560ed39c8180>
#> <environment: namespace:plumber>
# serializer_content_type() calls `serializer_headers()` and supplies a serialization function
print(serializer_content_type)
#> function (type, serialize_fn = identity)
#> {
#> if (missing(type)) {
#> stop("You must provide the custom content type to the serializer_content_type")
#> }
#> stopifnot(length(type) == 1)
#> stopifnot(is.character(type))
#> stopifnot(nchar(type) > 0)
#> serializer_headers(list(`Content-Type` = type), serialize_fn)
#> }
#> <bytecode: 0x560ed3989e10>
#> <environment: namespace:plumber>