awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
lostisland avatar

lostisland/faraday

0
View on GitHub↗
5,946 stars·1,021 forks·Ruby·MIT·24 viewslostisland.github.io/faraday↗

Faraday

Faraday is an HTTP client library for Ruby that sends requests and processes responses through a middleware pipeline with pluggable adapters. Its core identity is built around a middleware-pipeline architecture where HTTP requests and responses flow through a chain of components that can modify, log, or transform data before reaching the backend, combined with an adapter-based backend abstraction that delegates HTTP execution to interchangeable backends like Net::HTTP or Typhoeus.

The library distinguishes itself through a parallel-execution engine that dispatches multiple HTTP requests concurrently using thread-based or event-driven mechanisms, a streaming response handler that delivers response data incrementally as chunks arrive, and connection-pooling transport that reuses persistent TCP connections across multiple requests. It also includes content-type parsing middleware that automatically detects response content types and parses bodies into structured formats like JSON, XML, or YAML, and a file-upload multipart encoder for encoding file data into multipart/form-data bodies.

Faraday supports automatic response body parsing, the ability to swap HTTP adapters without rewriting application code, and the capability to upload files via HTTP. The library provides mechanisms for executing requests in parallel and reusing persistent connections to reduce latency in network-bound applications.

Features

  • HTTP Client Libraries - An HTTP client library that sends requests and processes responses through a middleware pipeline with pluggable adapters.
  • HTTP Client Adapters - Making HTTP requests from Ruby applications with a consistent interface that works across multiple backend adapters.
  • Request-Response Middleware - Run HTTP requests and responses through a middleware pipeline to add custom behavior.
  • Response Body Parsing - Parse response bodies into structured formats like JSON, XML, or YAML without manual conversion.
  • Response Streaming - Receive HTTP response data piece by piece as it arrives from the server.
  • Connection Pooling - An HTTP client that reuses persistent TCP connections across multiple requests to reduce latency.
  • Parallel Request Executions - Sending multiple HTTP requests concurrently to reduce total wait time in network-bound applications.
  • Parallel Execution Engines - Multiple HTTP requests are dispatched concurrently using thread-based or event-driven mechanisms to minimize total wait time.
  • Composable Middleware Pipelines - Adding custom behavior to HTTP requests and responses through a composable middleware chain.
  • HTTP Client Adapters - A common interface delegates HTTP execution to interchangeable backend adapters like Net::HTTP or Typhoeus, enabling runtime backend switching.
  • Middleware Architectures - HTTP requests and responses flow through a chain of middleware components that can modify, log, or transform data before reaching the adapter.
  • HTTP Middleware Pipelines - An extensible middleware stack that intercepts and transforms HTTP requests and responses for custom behavior.
  • Streaming Response Handlers - Response data is delivered incrementally as chunks arrive from the server, allowing processing before the full body is received.
  • Parallel Request Executors - A mechanism that runs multiple HTTP requests concurrently to minimize total wait time.
  • Content-Type Parsing Middleware - Middleware automatically detects response content types and parses bodies into structured formats like JSON, XML, or YAML.
  • HTTP File Uploads - Send file data inside an HTTP request body to a remote server.
  • HTTP Keep-Alive Connections - Keep TCP connections alive across multiple requests to avoid repeated handshakes.
  • Response Streaming - Receiving response data incrementally as it arrives from the server rather than waiting for the full payload.
  • Concurrent Request Pooling - Run multiple HTTP requests concurrently to reduce total wait time.
  • API Client Development Tools - Flexible HTTP client library for Ruby.
  • HTTP Clients - Modular HTTP client with support for multiple adapters.

Star history

Star history chart for lostisland/faradayStar history chart for lostisland/faraday

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with Faraday

These projects share indexed features with Faraday. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • guzzle/guzzleguzzle avatar

    guzzle/guzzle

    23,453View on GitHub↗

    Guzzle is a PHP HTTP client used for sending synchronous and asynchronous requests to web services. It serves as a concurrent HTTP request manager, an HTTP stream handler, and a middleware-based HTTP pipeline. The project is a PSR-7 compliant client, utilizing standardized PHP interfaces for requests, responses, and streams. The library differentiates itself through a customizable functional handler stack that allows for the interception and modification of the request and response lifecycle. It features an adapter-based transport system that enables swapping between network implementations,

    PHP
    View on GitHub↗23,453
  • node-fetch/node-fetchnode-fetch avatar

    node-fetch/node-fetch

    8,857View on GitHub↗

    node-fetch is a promise-based HTTP client library that provides a lightweight implementation of the Fetch API for the Node.js runtime. It serves as a network interface for performing asynchronous HTTP requests, handling server communication, and managing headers. The library utilizes a promise-based request lifecycle to wrap network calls, ensuring asynchronous behavior. It incorporates stream-based handling for both requests and responses to process large payloads efficiently without overloading system memory. Its capabilities cover a broad range of network communication tasks, including th

    JavaScriptfetchfetch-apihacktoberfest
    View on GitHub↗8,857
  • typhoeus/typhoeustyphoeus avatar

    typhoeus/typhoeus

    4,130View on GitHub↗

    Typhoeus is a Ruby wrapper for libcurl that functions as a session-based HTTP client. It provides an interface for making both synchronous and asynchronous network requests. The project acts as a parallel request manager, using a managed queue to execute multiple network requests concurrently. It further distinguishes itself as a mocking tool for stubbing requests with predefined responses and as a caching layer that stores responses to avoid redundant network calls. The library covers a broad range of capabilities including session cookie management, response body streaming for large files,

    Ruby
    View on GitHub↗4,130
  • kennethreitz/grequestskennethreitz avatar

    kennethreitz/grequests

    4,575View on GitHub↗

    Grequests is an asynchronous HTTP batcher and Gevent-based client library used to execute large sets of network requests simultaneously. It functions as a concurrent request wrapper for the Requests library, enabling non-blocking operations to reduce the total time spent waiting for server responses. The project provides a task-pool execution model to handle batch network operations, such as high-throughput web scraping and API polling. It can stream responses as they arrive via a generator, allowing for immediate data processing without waiting for the entire batch to complete. The library

    Python
    View on GitHub↗4,575
Compare all 30 related projects→

Frequently asked questions

What does lostisland/faraday do?

Faraday is an HTTP client library for Ruby that sends requests and processes responses through a middleware pipeline with pluggable adapters. Its core identity is built around a middleware-pipeline architecture where HTTP requests and responses flow through a chain of components that can modify, log, or transform data before reaching the backend, combined with an adapter-based backend abstraction that delegates HTTP execution to interchangeable backends like Net::HTTP or…

What are the main features of lostisland/faraday?

The main features of lostisland/faraday are: HTTP Client Libraries, HTTP Client Adapters, Request-Response Middleware, Response Body Parsing, Response Streaming, Connection Pooling, Parallel Request Executions, Parallel Execution Engines.

Which projects share features with lostisland/faraday?

Projects with overlapping indexed features include: guzzle/guzzle — Guzzle is a PHP HTTP client used for sending synchronous and asynchronous requests to web services. It serves as a… node-fetch/node-fetch — node-fetch is a promise-based HTTP client library that provides a lightweight implementation of the Fetch API for the… typhoeus/typhoeus — Typhoeus is a Ruby wrapper for libcurl that functions as a session-based HTTP client. It provides an interface for… kennethreitz/grequests — Grequests is an asynchronous HTTP batcher and Gevent-based client library used to execute large sets of network… encode/httpx — This project is a comprehensive Python network request framework designed for both synchronous and asynchronous HTTP… rest-client/rest-client — This is a Ruby HTTP client designed for REST API integration, resource modeling, and automated network communication.…