1.4.0¶ ↑
Features¶ ↑
:content_digest
plugin¶ ↑
The :content_digest
can be used to calculate the digest of request payloads and set them in the "content-digest"
header; it can also validate the integrity of responses which declare the same "content-digest"
header.
More info under honeyryderchuck.gitlab.io/httpx/wiki/Content-Digest
Per-session connection pools¶ ↑
This architectural changes moves away from per-thread shared connection pools, and into per-session (also thread-safe) connection pools. Unlike before, this enables connections from a session to be reused across threads, as well as limiting the number of connections that can be open on a given origin peer. This fixes long-standing issues, such as reusing connections under a fiber scheduler loop (such as the one from the gem async
).
A new :pool_options
option is introduced, which can be passed an hash with the following sub-options:
-
:max_connections_per_origin
: maximum number of connections a pool allows (unbounded by default, for backwards compatibility). -
:pool_timeout
: the number of seconds a session will wait for a connection to be checked out (default: 5)
More info under honeyryderchuck.gitlab.io/httpx/wiki/Connection-Pools
Improvements¶ ↑
-
:aws_sigv4
plugin: improved digest calculation on compressed request bodies by buffering content to a tempfile. -
HTTPX::Response#json
will parse payload from extended json MIME types (likeapplication/ld+json
,application/hal+json
, …).
Bugfixes¶ ↑
-
:aws_sigv4
plugin: do not try to rewind a request body which yields chunks. -
fixed request encoding when
:json
param is passed, and theoj
gem is used (by using the:compat
flag). -
native resolver: on message truncation, bubble up tcp handshake errors as resolve errors.
-
allow
HTTPX::Response#json
to accept extended JSON mime types (such as responses withcontent-type: application/ld+json
)
Chore¶ ↑
-
default options are now fully frozen (in case anyone relies on overriding them).
:xml
plugin¶ ↑
XML encoding/decoding (via :xml
request param, and HTTPX::Response#xml
) is now available via the :xml
plugin.
Using HTTPX::Response#xml
without the plugin will issue a deprecation warning.