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 httr2 request object.

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.6 r-curl/5.2.3 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, 04 Nov 2024 18:03:33 GMT
#> <- access-control-allow-origin: *
#> <- etag: W/"67290c75-4983"
#> <- expires: Mon, 04 Nov 2024 18:15:00 GMT
#> <- cache-control: max-age=600
#> <- content-encoding: gzip
#> <- x-proxy-cache: MISS
#> <- x-github-request-id: 0AC0:3BF84:5F15824:6120415:67290CCC
#> <- accept-ranges: bytes
#> <- date: Mon, 04 Nov 2024 18:05:18 GMT
#> <- via: 1.1 varnish
#> <- age: 19
#> <- x-served-by: cache-pao-kpao1770049-PAO
#> <- x-cache: HIT
#> <- x-cache-hits: 1
#> <- x-timer: S1730743519.943246,VS0,VE1
#> <- vary: Accept-Encoding
#> <- x-fastly-request-id: 7fd3fd669986b716fd5017c7210438572628d144
#> <- content-length: 4636
#> <- 

# 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.6 r-curl/5.2.3 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, 04 Nov 2024 18:03:33 GMT
#> <- access-control-allow-origin: *
#> <- etag: W/"67290c75-4983"
#> <- expires: Mon, 04 Nov 2024 18:15:00 GMT
#> <- cache-control: max-age=600
#> <- content-encoding: gzip
#> <- x-proxy-cache: MISS
#> <- x-github-request-id: 0AC0:3BF84:5F15824:6120415:67290CCC
#> <- accept-ranges: bytes
#> <- date: Mon, 04 Nov 2024 18:05:18 GMT
#> <- via: 1.1 varnish
#> <- age: 19
#> <- x-served-by: cache-pao-kpao1770049-PAO
#> <- x-cache: HIT
#> <- x-cache-hits: 2
#> <- x-timer: S1730743519.953944,VS0,VE0
#> <- vary: Accept-Encoding
#> <- x-fastly-request-id: 56df64d9597ebff398deb49a0e8f2018327f5d77
#> <- content-length: 4636
#> <-