In this post, the author discusses various HTTP clients available in the Elixir ecosystem. They provide an overview of their preferred clients and discuss the best choices for different use cases. The author highlights Mint as the lowest-level and most customizable HTTP client in Elixir. They mention that Mint can be useful for building higher-level abstractions and for cases where fine-grained control over performance and process architecture is necessary. The author also discusses Finch, a client built on top of Mint that provides pooling for connections. They recommend Finch for performance-sensitive applications and when making a lot of requests to the same host. Req is another client the author mentions, highlighting its functional-programming approach and extensive customization options. They recommend Req for scripting and most applications that make HTTP calls. Lastly, the author discusses httpc, the only HTTP client in the ecosystem that doesn’t require additional dependencies. They recommend using httpc when avoiding external dependencies is crucial, such as for library authors. The author provides their loose recommendations for choosing the right client based on different scenarios. They also briefly mention other clients like HTTPoison and hackney, and highlight some concerns with hackney’s security defaults, dependencies, and telemetry integration. The post concludes with a summary table and acknowledgments.
https://andrealeopardi.com/posts/breakdown-of-http-clients-in-elixir/