1.0.0¶ ↑
Breaking changes¶ ↑
-
the minimum supported ruby version is 2.7.0 .
-
The fallback support for IDNA 2003 has been removed. If you require this feature, install the idnx gem, which
httpx
automatically integrates with when available (and supports IDNA 2008). -
:total_timeout
option has been removed (no session-wide timeout supported, use:request_timeout
). -
:read_timeout
and:write_timeout
are now set to 60 seconds by default, and preferred over:operation_timeout
; -
the exception being in the
:stream
plugin, as the response is theoretically endless (so:read_timeout
is unset). -
The
:multipart
plugin is removed, as its functionality and API are now loaded by default (no API changes). -
The
:compression
plugin is removed, as its functionality and API are now loaded by default (no API changes). -
:compression_threshold_size
was removed (formats in"content-encoding"
request header will always encode the request body). -
the new
:compress_request_body
and:decompress_response_body
can be set tofalse
to (respectively) disable compression of passed input body, or decompression of the response body. -
:retries
plugin: the:retry_on
condition will not replace default retriable error checks, it will now instead be triggered only if no retryable error has been found.
plugins¶ ↑
-
:authentication
plugin becomes:auth
. -
.authentication
helper becomes.authorization
. -
:basic_authentication
plugin becomes:basic_auth
. -
:basic_authentication
helper is removed. -
:digest_authentication
plugin becomes:digest_auth
. -
:digest_authentication
helper is removed. -
:ntlm_authentication
plugin becomes:ntlm_auth
. -
:ntlm_authentication
helper is removed. -
OAuth plugin:
:oauth_authentication
helper is rename to:oauth_auth
. -
:compression/brotli
plugin becomes:brotli
.
Support removed for deprecated APIs¶ ↑
-
The deprecated
HTTPX::Client
constant lookup has been removed (useHTTPX::Session
instead). -
The deprecated
HTTPX.timeout({...})
function has been removed (useHTTPX.with(timeout: {...})
instead). -
The deprecated
HTTPX.headers({...})
function has been removed (useHTTPX.with(headers: {...})
instead). -
The deprecated
HTTPX.plugins(...)
function has been removed (useHTTPX.plugin(...).plugin(...)...
instead). -
The deprecated
:transport_options
option, which was only valid for UNIX connections, has been removed (use:addresses
instead). -
The deprecated
def_option(...)
function, previously used to define additional options in plugins, has been removed (usedef option_$new_option)
instead). -
The deprecated
:loop_timeout
timeout option has been removed. -
:stream
plugin: the deprecatedHTTPX::InstanceMethods::StreamResponse
has been removed (useHTTPX::StreamResponse
instead). -
The deprecated usage of symbols to indicate HTTP verbs (i.e.
HTTPX.request(:get, ...)
orHTTPX.build_request(:get, ...)
) is not supported anymore (use the upcase string always, i.e.HTTPX.request("GET", ...)
orHTTPX.build_request("GET", ...)
, instead). -
The deprecated
HTTPX::ErrorResponse#status
method has been removed (useHTTPX::ErrorResponse#error
instead).
dependencies¶ ↑
-
http-2-next
minimum supported version is 1.0.0. -
:datadog
adapter only supportsddtrace
gem 1.x or higher. -
:faraday
adapter only supportsfaraday
gem 1.x or higher.
Improvements¶ ↑
-
circuit_breaker
: the drip rate of real request during the “half-open” stage of a circuit will reliably distribute real requests (as per the drip rate) over themax_attempts
, before the circuit is closed.
Bugfixes¶ ↑
-
Tempfiles are now correctly identified as file inputs for multipart requests.
-
fixed
proxy
plugin behaviour when loaded with thefollow_redirects
plugin and processing a 305 response (request needs to be retried on a different proxy).
Chore¶ ↑
-
:grpc
plugin: connection won’t buffer requests before HTTP/2 handshake is commpleted, i.e. works the same as plainhttpx
HTTP/2 connection establishment. -
if you are relying on this, you can keep the old behavior this way:
HTTPX.plugin(:grpc, http2_settings: { wait_for_handshake: false })
.