The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
request is DSL for http requests for R, and is inspired
by the CLI tool httpie.
request is built on httr, though may allow
using the R packages RCurl or curl as optional
backends at some point.
content-type and accept headers to
applications/json by defaultdplyr, etc.GET requests by default. Specify a different type
if you don’t want GET&’s, URL escaping,
etc. (see api_query())api_body())All of the defaults just mentioned can be changed.
When using pipes, we autodetect that a pipe is being used within the
function calls, and automatically do the appropriate http request on the
last piped function call. When you call a function without using pipes,
you have to use the http() function explicitly to make the
http request.
Low level access is available with http_client(), which
returns an R6 class with various methods for inspecting
http request results.
The function peep() let’s you peek at a request without
performing the http request.
From CRAN
install.packages("request")Development version from GitHub
devtools::install_github("sckott/request")library("request")NSE is supported
api('https://api.github.com/') %>%
api_path(repos, ropensci, rgbif, issues)as well as SE
api('https://api.github.com/') %>%
api_path_('repos', 'ropensci', 'rgbif', 'issues')Works with full or partial URLs
api('https://api.github.com/')
#> URL: https://api.github.com/
api('http://api.gbif.org/v1')
#> URL: http://api.gbif.org/v1
api('api.gbif.org/v1')
#> URL: api.gbif.org/v1Works with ports, full or partial
api('http://localhost:9200')
#> URL: http://localhost:9200
api('localhost:9200')
#> URL: http://localhost:9200
api(':9200')
#> URL: http://localhost:9200
api('9200')
#> URL: http://localhost:9200
api('9200/stuff')
#> URL: http://localhost:9200/stuffThe above examples with api() are not passed through a
pipe, so only define a URL, but don’t do an HTTP request. To make an
HTTP request, you can either pipe a url or partial url to e.g.,
api(), or call http() at the end of a string
of function calls:
'https://api.github.com/' %>% api()
#> $current_user_url
#> [1] "https://api.github.com/user"
#>
#> $current_user_authorizations_html_url
#> [1] "https://github.com/settings/connections/applications{/client_id}"
#>
#> $authorizations_url
#> [1] "https://api.github.com/authorizations"
#>
#> $code_search_url
...Or
api('https://api.github.com/') %>% http()
#> $current_user_url
#> [1] "https://api.github.com/user"
#>
#> $current_user_authorizations_html_url
#> [1] "https://github.com/settings/connections/applications{/client_id}"
#>
#> $authorizations_url
#> [1] "https://api.github.com/authorizations"
#>
#> $code_search_url
...http() is called at the end of a chain of piped
commands, so no need to invoke it. However, you can if you like.
repo_info <- list(username = 'craigcitro', repo = 'r-travis')
api('https://api.github.com/') %>%
api_template(template = 'repos/{{username}}/{{repo}}/issues', data = repo_info) %>%
peep
#> <http request>
#> url: https://api.github.com/
#> paths:
#> query:
#> body:
#> paging:
#> headers:
#> rate limit:
#> retry (n/delay (s)): /
#> error handler:
#> config:api_path() adds paths to the base URL (see
api_query()) for query parameters
api('https://api.github.com/') %>%
api_path(repos, ropensci, rgbif, issues) %>%
peep
#> <http request>
#> url: https://api.github.com/
#> paths: repos/ropensci/rgbif/issues
#> query:
#> body:
#> paging:
#> headers:
#> rate limit:
#> retry (n/delay (s)): /
#> error handler:
#> config:api("http://api.plos.org/search") %>%
api_query(q = ecology, wt = json, fl = 'id,journal') %>%
peep
#> <http request>
#> url: http://api.plos.org/search
#> paths:
#> query: q=ecology, wt=json, fl=id,journal
#> body:
#> paging:
#> headers:
#> rate limit:
#> retry (n/delay (s)): /
#> error handler:
#> config:See the issues for discussion of these
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.