vignettes/error_reporting_in_api.Rmd
error_reporting_in_api.Rmd
The following is a tutorial on how to use the
googleErrorReportingR
package inside a plumber API. even
though this is meant to be used in an API built using the plumber package, the same
logic can be used if you API is built with a different tool.
In your plumber.R
file define the central
characteristics of the error messages you will send from you API. We
suggest at least defining the following:
message <- googleErrorReportingR::format_error_message()
message$serviceContext$service <- "api_name"
message$serviceContext$version <- "api_version"
Nevertheless, if there are other charcateristics in
format_error_message()
that are the same for all errors
reported from your api, feel free to define them here.
You also need to indicate the error reporting API key and GCP
project_id
.
There are different ways to do this, if your API is hosted on Cloud
run, you can define them as environmental variables or secrets. If you
are using a start.sh
file, you can define them there es
environmental variables also.
The important thing is that they need to be define at a high level place that, from the moment the API is started, they are available. We strongly recommend you keep both of this elements in a secret manager like GCP’s and not as plain text values.
Note: is not recommended that you define them in a Dockerfile, it could lead to security issues.
The easiest way to catch errors from your endpoint is to
wrap the endpoint’s functionalities in a function and then wrap that
function in a tryCatch()
that sends an error if found.
The following is a minimal example of the usage of the error
reporting functionality, you can add as much of the
format_error_message()
parameters as you like:
error_catcher_from_function <- tryCatch(
your_function(your_parameters),
error = function(e) {
message$message <- as.character(e)
googleErrorReportingR::report_error(message)
stop("Error message to print", call. = FALSE)
})