finch alternatives and similar packages
Based on the "HTTP" category.
Alternatively, view finch alternatives based on common mentions on social networks and blogs.
-
mint
Functional HTTP client for Elixir with support for HTTP/1 and HTTP/2 🌱 -
PlugAttack
A plug building toolkit for blocking and throttling abusive requests -
spell
Spell is a Web Application Messaging Protocol (WAMP) client implementation in Elixir. WAMP is an open standard WebSocket subprotocol that provides two application messaging patterns in one unified protocol: Remote Procedure Calls + Publish & Subscribe: http://wamp.ws/ -
web_socket
An exploration into a stand-alone library for Plug applications to easily adopt WebSockets. -
http_proxy
http proxy with Elixir. wait request with multi port and forward to each URIs -
explode
An easy utility for responding with standard HTTP/JSON error payloads in Plug- and Phoenix-based applications -
Mechanize
Build web scrapers and automate interaction with websites in Elixir with ease! -
fuzzyurl
An Elixir library for non-strict parsing, manipulation, and wildcard matching of URLs. -
ivar
Ivar is an adapter based HTTP client that provides the ability to build composable HTTP requests. -
SpiderMan
SpiderMan,a base-on Broadway fast high-level web crawling & scraping framework for Elixir. -
http_digex
HTTP Digest Auth Library to create auth header to be used with HTTP Digest Authentication -
Ralitobu.Plug
Elixir Plug for Ralitobu, the Rate Limiter with Token Bucket algorithm
Learn any GitHub repo in 59 seconds
Do you think we are missing an alternative of finch or a related project?
Popular Comparisons
README
[Finch](./assets/Finch_logo_onWhite.png#gh-light-mode-only) [Finch](./assets/Finch_logo_all-White.png#gh-dark-mode-only)
<!-- MDOC !-->
An HTTP client with a focus on performance, built on top of Mint and NimblePool.
We try to achieve this goal by providing efficient connection pooling strategies and avoiding copying wherever possible.
Usage
In order to use Finch, you must start it and provide a :name
. Often in your
supervision tree:
children = [
{Finch, name: MyFinch}
]
Or, in rare cases, dynamically:
Finch.start_link(name: MyFinch)
Once you have started your instance of Finch, you are ready to start making requests:
Finch.build(:get, "https://hex.pm") |> Finch.request(MyFinch)
When using HTTP/1, Finch will parse the passed in URL into a {scheme, host, port}
tuple, and maintain one or more connection pools for each {scheme, host, port}
you
interact with.
You can also configure a pool size and count to be used for specific URLs that are
known before starting Finch. The passed URLs will be parsed into {scheme, host, port}
,
and the corresponding pools will be started. See Finch.start_link/1
for configuration
options.
children = [
{Finch,
name: MyConfiguredFinch,
pools: %{
:default => [size: 10],
"https://hex.pm" => [size: 32, count: 8]
}}
]
Pools will be started for each configured {scheme, host, port}
when Finch is started.
For any unconfigured {scheme, host, port}
, the pool will be started the first time
it is requested. Note pools are not automatically terminated by default, if you need to
terminate them after some idle time, use the pool_max_idle_time
option (available only for HTTP1 pools).
Telemetry
Finch uses Telemetry to provide instrumentation. See the Finch.Telemetry
module for details on specific events.
Logging TLS Secrets
Finch supports logging TLS secrets to a file. These can be later used in a tool such as
Wireshark to decrypt HTTPS sessions. To use this feature you must specify the file to
which the secrets should be written. If you are using TLSv1.3 you must also add
keep_secrets: true
to your pool :transport_opts
. For example:
{Finch,
name: MyFinch,
pools: %{
default: [conn_opts: [transport_opts: [keep_secrets: true]]]
}}
There are two different ways to specify this file:
- The
:ssl_key_log_file
connection option in your pool configuration. For example:
{Finch,
name: MyFinch,
pools: %{
default: [
conn_opts: [
ssl_key_log_file: "/writable/path/to/the/sslkey.log"
]
]
}}
- Alternatively, you could also set the
SSLKEYLOGFILE
environment variable.
<!-- MDOC !-->
Installation
The package can be installed by adding finch
to your list of dependencies in mix.exs
:
def deps do
[
{:finch, "~> 0.14"}
]
end
The docs can be found at https://hexdocs.pm/finch.