Create HTTP requests
Details
This R6 class doesn't do actual HTTP requests as does
HttpClient()
- it is for building requests to use for async HTTP
requests in AsyncVaried()
Note that you can access HTTP verbs after creating an HttpRequest
object, just as you can with HttpClient
. See examples for usage.
Also note that when you call HTTP verbs on a HttpRequest
object you
don't need to assign the new object to a variable as the new details
you've added are added to the object itself.
See HttpClient()
for information on parameters.
R6 classes
This is an R6 class from the package R6. Find out more
about R6 at https://r6.r-lib.org/. After creating an instance of an R6
class (e.g., x <- HttpClient$new(url = "https://hb.opencpu.org")
) you can
access values and methods on the object x
.
See also
Other async:
Async
,
AsyncQueue
,
AsyncVaried
Public fields
url
(character) a url
opts
(list) named list of curl options
proxies
a
proxy()
objectauth
an
auth()
objectheaders
(list) named list of headers, see http-headers
handle
a
handle()
progress
only supports
httr::progress()
, see progresspayload
resulting payload after request
Methods
Method print()
print method for HttpRequest
objects
Method new()
Create a new HttpRequest
object
Usage
HttpRequest$new(url, opts, proxies, auth, headers, handle, progress)
Arguments
url
(character) A url. One of
url
orhandle
required.opts
any curl options
proxies
a
proxy()
objectauth
an
auth()
objectheaders
named list of headers, see http-headers
handle
a
handle()
progress
only supports
httr::progress()
, see progressurls
(character) one or more URLs
Method get()
Define a GET request
Usage
HttpRequest$get(path = NULL, query = list(), disk = NULL, stream = NULL, ...)
Arguments
path
URL path, appended to the base URL
query
query terms, as a named list
disk
a path to write to. if NULL (default), memory used. See
curl::curl_fetch_disk()
for help.stream
an R function to determine how to stream data. if NULL (default), memory used. See
curl::curl_fetch_stream()
for help...
curl options, only those in the acceptable set from
curl::curl_options()
except the following: httpget, httppost, post, postfields, postfieldsize, and customrequest
Method post()
Define a POST request
Usage
HttpRequest$post(
path = NULL,
query = list(),
body = NULL,
disk = NULL,
stream = NULL,
encode = "multipart",
...
)
Arguments
path
URL path, appended to the base URL
query
query terms, as a named list
body
body as an R list
disk
a path to write to. if NULL (default), memory used. See
curl::curl_fetch_disk()
for help.stream
an R function to determine how to stream data. if NULL (default), memory used. See
curl::curl_fetch_stream()
for helpencode
one of form, multipart, json, or raw
...
curl options, only those in the acceptable set from
curl::curl_options()
except the following: httpget, httppost, post, postfields, postfieldsize, and customrequest
Method put()
Define a PUT request
Usage
HttpRequest$put(
path = NULL,
query = list(),
body = NULL,
disk = NULL,
stream = NULL,
encode = "multipart",
...
)
Arguments
path
URL path, appended to the base URL
query
query terms, as a named list
body
body as an R list
disk
a path to write to. if NULL (default), memory used. See
curl::curl_fetch_disk()
for help.stream
an R function to determine how to stream data. if NULL (default), memory used. See
curl::curl_fetch_stream()
for helpencode
one of form, multipart, json, or raw
...
curl options, only those in the acceptable set from
curl::curl_options()
except the following: httpget, httppost, post, postfields, postfieldsize, and customrequest
Method patch()
Define a PATCH request
Usage
HttpRequest$patch(
path = NULL,
query = list(),
body = NULL,
disk = NULL,
stream = NULL,
encode = "multipart",
...
)
Arguments
path
URL path, appended to the base URL
query
query terms, as a named list
body
body as an R list
disk
a path to write to. if NULL (default), memory used. See
curl::curl_fetch_disk()
for help.stream
an R function to determine how to stream data. if NULL (default), memory used. See
curl::curl_fetch_stream()
for helpencode
one of form, multipart, json, or raw
...
curl options, only those in the acceptable set from
curl::curl_options()
except the following: httpget, httppost, post, postfields, postfieldsize, and customrequest
Method delete()
Define a DELETE request
Usage
HttpRequest$delete(
path = NULL,
query = list(),
body = NULL,
disk = NULL,
stream = NULL,
encode = "multipart",
...
)
Arguments
path
URL path, appended to the base URL
query
query terms, as a named list
body
body as an R list
disk
a path to write to. if NULL (default), memory used. See
curl::curl_fetch_disk()
for help.stream
an R function to determine how to stream data. if NULL (default), memory used. See
curl::curl_fetch_stream()
for helpencode
one of form, multipart, json, or raw
...
curl options, only those in the acceptable set from
curl::curl_options()
except the following: httpget, httppost, post, postfields, postfieldsize, and customrequest
Method head()
Define a HEAD request
Arguments
path
URL path, appended to the base URL
...
curl options, only those in the acceptable set from
curl::curl_options()
except the following: httpget, httppost, post, postfields, postfieldsize, and customrequest
Method verb()
Use an arbitrary HTTP verb supported on this class Supported verbs: get, post, put, patch, delete, head
Arguments
verb
an HTTP verb supported on this class: get, post, put, patch, delete, head. Also supports retry.
...
curl options, only those in the acceptable set from
curl::curl_options()
except the following: httpget, httppost, post, postfields, postfieldsize, and customrequest
Examples
z <- HttpRequest$new(url = "https://hb.opencpu.org/get")
res <- z$verb('get', query = list(hello = "world"))
res$payload
Method retry()
Define a RETRY request
Usage
HttpRequest$retry(
verb,
...,
pause_base = 1,
pause_cap = 60,
pause_min = 1,
times = 3,
terminate_on = NULL,
retry_only_on = NULL,
onwait = NULL
)
Arguments
verb
an HTTP verb supported on this class: get, post, put, patch, delete, head. Also supports retry.
...
curl options, only those in the acceptable set from
curl::curl_options()
except the following: httpget, httppost, post, postfields, postfieldsize, and customrequestpause_base, pause_cap, pause_min
basis, maximum, and minimum for calculating wait time for retry. Wait time is calculated according to the exponential backoff with full jitter algorithm. Specifically, wait time is chosen randomly between
pause_min
and the lesser ofpause_base * 2
andpause_cap
, withpause_base
doubling on each subsequent retry attempt. Usepause_cap = Inf
to not terminate retrying due to cap of wait time reached.times
the maximum number of times to retry. Set to
Inf
to not stop retrying due to exhausting the number of attempts.terminate_on, retry_only_on
a vector of HTTP status codes. For
terminate_on
, the status codes for which to terminate retrying, and forretry_only_on
, the status codes for which to retry the request.onwait
a callback function if the request will be retried and a wait time is being applied. The function will be passed two parameters, the response object from the failed request, and the wait time in seconds. Note that the time spent in the function effectively adds to the wait time, so it should be kept simple.
Examples
if (FALSE) { # \dontrun{
x <- HttpRequest$new(url = "https://hb.opencpu.org/get")
## note here how the HTTP method is shown on the first line to the right
x$get()
## assign to a new object to keep the output
z <- x$get()
### get the HTTP method
z$method()
(x <- HttpRequest$new(url = "https://hb.opencpu.org/get")$get())
x$url
x$payload
(x <- HttpRequest$new(url = "https://hb.opencpu.org/post"))
x$post(body = list(foo = "bar"))
HttpRequest$new(
url = "https://hb.opencpu.org/get",
headers = list(
`Content-Type` = "application/json"
)
)
# retry
(x <- HttpRequest$new(url = "https://hb.opencpu.org/post"))
x$retry("post", body = list(foo = "bar"))
} # }
## ------------------------------------------------
## Method `HttpRequest$verb`
## ------------------------------------------------
z <- HttpRequest$new(url = "https://hb.opencpu.org/get")
res <- z$verb('get', query = list(hello = "world"))
res$payload
#> $url
#> $url$url
#> [1] "https://hb.opencpu.org/get?hello=world"
#>
#> $url$handle
#> <curl handle> (https://hb.opencpu.org/get?hello=world)
#>
#>
#> $method
#> [1] "get"
#>
#> $options
#> $options$httpget
#> [1] TRUE
#>
#>
#> $headers
#> $headers$`Accept-Encoding`
#> [1] "gzip, deflate"
#>
#> $headers$Accept
#> [1] "application/json, text/xml, application/xml, */*"
#>
#>