A usable, fast, and simple HTTP 1.1 client library for Ruby, ideal for API clients and general HTTP requests.
Excon is a Ruby library for making HTTP 1.1 requests, focusing on usability, speed, and simplicity. It functions as a general-purpose HTTP(s) client and is especially effective for building API clients, offering fine-grained control over connections, timeouts, and retries. It handles both one-off requests and persistent connections with support for features like streaming, pipelining, and stubbing for tests.
Ruby developers building API clients, web services, or applications requiring low-level HTTP communication with customizable options. It's also valuable for testers needing reliable HTTP stubbing.
Developers choose Excon for its balance of simplicity and performance, providing a lightweight, flexible alternative to heavier HTTP clients. Its built-in stubbing, persistent connections, and extensive configuration options make it ideal for production API integrations and testing scenarios.
Usable, fast, simple HTTP 1.1 for Ruby
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides straightforward one-off requests and reusable connection objects with persistent connections, reducing overhead and improving speed, as demonstrated in the 'Getting Started' section.
Offers fine-grained control over timeouts, retries, SSL settings, and more, with detailed examples in the 'Options' and 'Timeouts and Retries' sections for robust HTTP communication.
Includes a stubbing system for mocking HTTP requests in tests, allowing easy setup with Excon.stub and clear management, as covered in the 'Stubs' section.
Supports chunked requests, streaming responses, and HTTP pipelining for efficient handling of large data and batch requests, detailed in dedicated sections like 'Streaming Responses'.
Excon lacks automatic JSON parsing or generation, requiring developers to manually encode/decode data or rely on external libraries, which adds boilerplate for API interactions.
Does not support HTTP/2 or HTTP/3, missing out on modern features like multiplexing that can enhance performance in high-concurrency scenarios.
Features like custom DNS resolvers or instrumentation require additional setup and understanding of lower-level Ruby networking, as seen in options like :resolv_resolver and instrumentor configuration.