HTTPower.Adapter.Finch (HTTPower v0.16.0)

View Source

Finch adapter for HTTPower.

This adapter uses the Finch HTTP client library to make HTTP requests. Finch is a performance-focused HTTP client built on Mint and NimblePool, with explicit connection pooling and excellent performance characteristics.

Features

  • High-performance HTTP/1.1 and HTTP/2 support
  • Explicit connection pooling with configurable pool sizes
  • Built on Mint for low-level HTTP transport
  • SSL/TLS support with configurable verification
  • Proxy support (system or custom)
  • Manual JSON decoding for flexibility

Configuration

The Finch adapter accepts standard HTTPower options:

  • timeout - Request timeout in seconds (converted to milliseconds for Finch)
  • ssl_verify - Enable SSL verification (default: true)
  • proxy - Proxy configuration (:system, nil, or custom options)

Pool Configuration

Configure Finch pools globally in your application config:

config :httpower, :finch_pools,
  default: [
    size: 10,
    count: System.schedulers_online(),
    conn_opts: [
      timeout: 5_000
    ]
  ]

Testing

The Finch adapter works seamlessly with HTTPower.Test for mocking HTTP requests in tests. The test interceptor runs before Finch is called, providing adapter-agnostic testing.

Performance

Finch is recommended for high-throughput production scenarios where explicit connection pooling control and maximum performance are priorities. It's built on Mint, the same low-level library that powers Req.