This shows you exactly what httr2 will send to the server, without
actually sending anything. It requires the httpuv package because it
works by sending the real HTTP request to a local webserver, thanks to
the magic of curl::curl_echo()
.
Usage
req_dry_run(
req,
quiet = FALSE,
redact_headers = TRUE,
testing_headers = is_testing(),
pretty_json = getOption("httr2_pretty_json", TRUE)
)
Arguments
- req
A httr2 request object.
- quiet
If
TRUE
doesn't print anything.- redact_headers
Redact confidential data in the headers? Currently redacts the contents of the Authorization header to prevent you from accidentally leaking credentials when debugging/reprexing.
- testing_headers
If
TRUE
, removes headers that httr2 would otherwise be automatically added, which are likely to change across test runs. This currently includes:The default
User-Agent
, which varies based on libcurl, curl, and httr2 versions.The `Host“ header, which is often set to a testing server.
The
Content-Length
header, which will often vary by platform because of varying newline encodings. (And is also not correct if you havepretty_json = TRUE
.)The
Accept-Encoding
header, which varies based on how libcurl was built.
- pretty_json
If
TRUE
, automatically prettify JSON bodies.
Value
Invisibly, a list containing information about the request,
including method
, path
, and headers
.
Examples
# httr2 adds default User-Agent, Accept, and Accept-Encoding headers
request("http://example.com") |> req_dry_run()
#> GET / HTTP/1.1
#> accept: */*
#> accept-encoding: deflate, gzip, br, zstd
#> host: example.com
#> user-agent: httr2/1.1.0.9000 r-curl/6.2.1 libcurl/8.5.0
#>
# the Authorization header is automatically redacted to avoid leaking
# credentials on the console
req <- request("http://example.com") |> req_auth_basic("user", "password")
req |> req_dry_run()
#> GET / HTTP/1.1
#> accept: */*
#> accept-encoding: deflate, gzip, br, zstd
#> authorization: <REDACTED>
#> host: example.com
#> user-agent: httr2/1.1.0.9000 r-curl/6.2.1 libcurl/8.5.0
#>
# if you need to see it, use redact_headers = FALSE
req |> req_dry_run(redact_headers = FALSE)
#> GET / HTTP/1.1
#> accept: */*
#> accept-encoding: deflate, gzip, br, zstd
#> authorization: <REDACTED>
#> host: example.com
#> user-agent: httr2/1.1.0.9000 r-curl/6.2.1 libcurl/8.5.0
#>