Skip to content

req_verbose() uses the following prefixes to distinguish between different components of the HTTP requests and responses:

  • * informative curl messages

  • -> request headers

  • >> request body

  • <- response headers

  • << response body

Usage

req_verbose(
  req,
  header_req = TRUE,
  header_resp = TRUE,
  body_req = FALSE,
  body_resp = FALSE,
  info = FALSE,
  redact_headers = TRUE
)

Arguments

req

A request.

header_req, header_resp

Show request/response headers?

body_req, body_resp

Should request/response bodies? When the response body is compressed, this will show the number of bytes received in each "chunk".

info

Show informational text from curl? This is mainly useful for debugging https and auth problems, so is disabled by default.

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

A modified HTTP request.

See also

req_perform() which exposes a limited subset of these options through the verbosity argument and with_verbosity() which allows you to control the verbosity of requests deeper within the call stack.

Examples

# Use `req_verbose()` to see the headers that are sent back and forth when
# making a request
resp <- request("https://httr2.r-lib.org") |>
  req_verbose() |>
  req_perform()
#> -> GET / HTTP/2
#> -> Host: httr2.r-lib.org
#> -> user-agent: httr2/1.0.1 r-curl/5.2.1 libcurl/7.81.0
#> -> accept: */*
#> -> accept-encoding: deflate, gzip, br, zstd
#> -> 
#> <- HTTP/2 200 
#> <- server: GitHub.com
#> <- content-type: text/html; charset=utf-8
#> <- last-modified: Mon, 01 Apr 2024 19:01:49 GMT
#> <- access-control-allow-origin: *
#> <- etag: W/"660b049d-4f91"
#> <- expires: Mon, 01 Apr 2024 21:24:45 GMT
#> <- cache-control: max-age=600
#> <- content-encoding: gzip
#> <- x-proxy-cache: MISS
#> <- x-github-request-id: 165A:7F73D:2A82D94:3880311:660B23C5
#> <- accept-ranges: bytes
#> <- date: Mon, 01 Apr 2024 21:15:03 GMT
#> <- via: 1.1 varnish
#> <- age: 18
#> <- x-served-by: cache-iad-kcgs7200116-IAD
#> <- x-cache: HIT
#> <- x-cache-hits: 1
#> <- x-timer: S1712006103.495089,VS0,VE0
#> <- vary: Accept-Encoding
#> <- x-fastly-request-id: 694c57d947cb8b86e4de5f831c62bace418fd148
#> <- content-length: 5435
#> <- 

# Or use one of the convenient shortcuts:
resp <- request("https://httr2.r-lib.org") |>
  req_perform(verbosity = 1)
#> -> GET / HTTP/2
#> -> Host: httr2.r-lib.org
#> -> user-agent: httr2/1.0.1 r-curl/5.2.1 libcurl/7.81.0
#> -> accept: */*
#> -> accept-encoding: deflate, gzip, br, zstd
#> -> 
#> <- HTTP/2 200 
#> <- server: GitHub.com
#> <- content-type: text/html; charset=utf-8
#> <- last-modified: Mon, 01 Apr 2024 19:01:49 GMT
#> <- access-control-allow-origin: *
#> <- etag: W/"660b049d-4f91"
#> <- expires: Mon, 01 Apr 2024 21:24:45 GMT
#> <- cache-control: max-age=600
#> <- content-encoding: gzip
#> <- x-proxy-cache: MISS
#> <- x-github-request-id: 165A:7F73D:2A82D94:3880311:660B23C5
#> <- accept-ranges: bytes
#> <- date: Mon, 01 Apr 2024 21:15:03 GMT
#> <- via: 1.1 varnish
#> <- age: 18
#> <- x-served-by: cache-iad-kcgs7200116-IAD
#> <- x-cache: HIT
#> <- x-cache-hits: 2
#> <- x-timer: S1712006104.516337,VS0,VE1
#> <- vary: Accept-Encoding
#> <- x-fastly-request-id: fe4de7f75eb4042c0a3f139b87e17df426f1e8e5
#> <- content-length: 5435
#> <-