All Projects → keathley → Finch

keathley / Finch

Licence: mit
Elixir HTTP Client focused on performance

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to Finch

Resty
Simple HTTP and REST client library for Go
Stars: ✭ 5,368 (+748.03%)
Mutual labels:  http-client
Aspida
TypeScript friendly HTTP client wrapper for the browser and node.js.
Stars: ✭ 490 (-22.59%)
Mutual labels:  http-client
Httpie
A Node.js HTTP client as easy as pie! 🥧
Stars: ✭ 563 (-11.06%)
Mutual labels:  http-client
Reboot
Scala wrapper for the Java AsyncHttpClient.
Stars: ✭ 437 (-30.96%)
Mutual labels:  http-client
Phin
Node HTTP client
Stars: ✭ 449 (-29.07%)
Mutual labels:  http-client
Apfree wifidog
A hight performance and lightweight captive portal solution for HTTP(s)
Stars: ✭ 519 (-18.01%)
Mutual labels:  http-client
Async Http Client
HTTP client library built on SwiftNIO
Stars: ✭ 414 (-34.6%)
Mutual labels:  http-client
Urllib
Request HTTP(s) URLs in a complex world
Stars: ✭ 600 (-5.21%)
Mutual labels:  http-client
Requests
Convenient http client for java, inspired by python request module
Stars: ✭ 459 (-27.49%)
Mutual labels:  http-client
Http Client
Async HTTP/1.1+2 client for PHP based on Amp.
Stars: ✭ 553 (-12.64%)
Mutual labels:  http-client
Httpdirfs
A filesystem which allows you to mount HTTP directory listings, with a permanent cache. Now with Airsonic / Subsonic support!
Stars: ✭ 443 (-30.02%)
Mutual labels:  http-client
Guzzle
Guzzle, an extensible PHP HTTP client
Stars: ✭ 21,384 (+3278.2%)
Mutual labels:  http-client
Lithium
Easy to use C++17 HTTP Server with no compromise on performances. https://matt-42.github.io/lithium
Stars: ✭ 523 (-17.38%)
Mutual labels:  http-client
Kohttp
Kotlin DSL http client
Stars: ✭ 436 (-31.12%)
Mutual labels:  http-client
Poco
The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.
Stars: ✭ 5,762 (+810.27%)
Mutual labels:  http-client
Ky Universal
Use Ky in both Node.js and browsers
Stars: ✭ 421 (-33.49%)
Mutual labels:  http-client
Http
Event-driven, streaming HTTP client and server implementation for ReactPHP.
Stars: ✭ 507 (-19.91%)
Mutual labels:  http-client
Httpu
The terminal-first http client
Stars: ✭ 619 (-2.21%)
Mutual labels:  http-client
Fast Android Networking
🚀 A Complete Fast Android Networking Library that also supports HTTP/2 🚀
Stars: ✭ 5,346 (+744.55%)
Mutual labels:  http-client
Ocaml Cohttp
An OCaml library for HTTP clients and servers using Lwt or Async
Stars: ✭ 533 (-15.8%)
Mutual labels:  http-client
Finch

An HTTP client with a focus on performance, built on top of Mint and NimblePool.

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 if they are unused, so Finch is best suited when you are requesting a known list of static hosts.

Telemetry

Finch uses Telemetry to provide instrumentation. See the Finch.Telemetry module for details on specific events.

Installation

The package can be installed by adding finch to your list of dependencies in mix.exs:

def deps do
  [
    {:finch, "~> 0.6"}
  ]
end

The docs can be found at https://hexdocs.pm/finch.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].