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().

req_dry_run(req, quiet = FALSE, redact_headers = TRUE)

Arguments

req

A request.

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.

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
#> Host: example.com
#> User-Agent: httr2/0.1.1.9000 r-curl/4.3.2 libcurl/7.68.0
#> Accept: */*
#> Accept-Encoding: deflate, gzip, br
#> 

# 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
#> Host: example.com
#> User-Agent: httr2/0.1.1.9000 r-curl/4.3.2 libcurl/7.68.0
#> Accept: */*
#> Accept-Encoding: deflate, gzip, br
#> Authorization: <REDACTED>
#> 

# if you need to see it, use redact_headers = FALSE
req %>% req_dry_run(redact_headers = FALSE)
#> GET / HTTP/1.1
#> Host: example.com
#> User-Agent: httr2/0.1.1.9000 r-curl/4.3.2 libcurl/7.68.0
#> Accept: */*
#> Accept-Encoding: deflate, gzip, br
#> Authorization: Basic dXNlcjpwYXNzd29yZA==
#>