HTTR.jl
is a 100% Julia implementation of the R httr2 package.
The main purpose of HTTR.jl
is to bridge the gap between the web and data analysis in Julia, offering a flexible and efficient interface for making HTTP requests while adhering to web standards. It leverages packages like EzXML.jl
, HTTP.jl
, JLD2.jl
, JSON3.jl
, and URIs.jl
to create and handle requests and manage various types of web data.
For the development version:
using Pkg
Pkg.add(url = "https://github.com/TidierOrg/HTTR.jl.git")
HTTR.jl currently supports:
Category | Function/Type |
---|---|
Create and Modify Requests | request() , Request , req_body_raw() , req_body_file() , req_body_json() , req_headers() ,req_method() , req_progress() ,req_timeout() , req_url() , req_user_agent() |
Debugging and Testing Requests | last_response() , last_request() , req_verbose() , with_verbosity() |
Requests Authentication | req_auth_basic() , req_auth_bearer_token() |
Perform a Request | req_perform() , req_retry() |
Perform Multiple Requests | (No functions included) |
Handle the Response | resp_body_raw() , resp_has_body() , resp_body_string() , resp_body_json() ,resp_body_html() , resp_body_xml() , resp_check_content_type() , resp_content_type() , resp_encoding() , resp_date() , resp_headers() , resp_header() , resp_header_exists() , resp_link_url() , resp_raw() , resp_retry_after() , resp_status() , resp_status_desc() , resp_is_error() ,resp_check_status() , resp_url() , resp_url_path() , resp_url_query() , resp_url_queries() |
Miscellaneous Helpers | curl_help() , secret_make_key() , secret_has_key() , url_parse() , url_build() |
OAuth | oauth_cache_path() , OAuthClient , oauth_client() , oauth_redirect_uri() , OAuthToken , oauth_token() |
Creating and modifying the request:
HTTR.Request
is the equivalent to R's httr2_request
S3 class. Several functions can be used to modify the request returned by this request. These functions can modify the request's methods, body, headers, etc.
The HTTR.request()
function creates the HTTR.Request
type. Without a body the request method defaults to GET. By using the @chain
macro, a request can be performed then the response can be then read as a String
using the resp_body_string()
function. If no response function is used the request will return the response as the type HTTP.Messages.Response
from the HTTP.jl
package:
using HTTR, Chain
@chain request("https://dummy.restapiexample.com/api/v1/employees") begin
req_perform()
resp_body_string()
println()
end
To create a POST request add a request body to the request, one way to do this is using the req_body_json()
function and adding the content type of application/json
, so that the request can be recognized as json. The response can be then read as a json using the resp_body_json()
function:
using HTTR, Chain
@chain request("https://dummy.restapiexample.com/api/v1/create") begin
req_body_json(Dict("name" => "test", "salary" => "123", "age" => "23"))
req_headers(["Content-Type" => "application/json"])
req_perform()
resp_body_json()
println()
end