For an HTTP client library for Go, the first results are go-resty/resty (Resty is a comprehensive HTTP client library for Go that natively supports middleware, retries, request tracing, and proxy management, making it a robust choice for handling complex network requests), imroc/req (This library is a comprehensive Go HTTP client that natively supports middleware, retries, context, proxying, and request tracing, making it a robust choice for complex network operations) and valyala/fasthttp (Fasthttp is a high-performance HTTP client library for Go that provides efficient request handling and includes built-in support for retries, though it uses a non-standard API that differs from the default net/http package). levigross/grequests and dghubble/sling round out the shortlist. Compare the match explanations and check the project documentation against your requirements.
We curate open-source GitHub repositories matching “best go http client libraries”. Results are ranked by relevance to your query — pick filters below to narrow, or refine with AI.
Resty is a high-level HTTP client library for Go designed for consuming REST services. It provides a streamlined interface for executing network requests, managing server-sent event streams, and automatically mapping JSON and XML responses into data structures. The library includes built-in mechanisms for service resilience and traffic management, such as circuit breakers to prevent cascading failures, token-bucket rate limiting, and automated request retries with exponential backoff. It also features client-side load balancing to distribute outgoing traffic across multiple base URLs and requ
Resty is a comprehensive HTTP client library for Go that natively supports middleware, retries, request tracing, and proxy management, making it a robust choice for handling complex network requests.
req is a chainable HTTP client library for Go designed to simplify request configuration and automatic response decoding into structures. It provides a fluent-interface request builder that allows developers to incrementally define request properties and encapsulate HTTP logic into reusable API SDKs. The project distinguishes itself with a TLS fingerprint emulator that mimics browser network signatures to bypass bot detection and crawler filters. It also includes a concurrent file downloader that increases transfer speeds by fetching large remote files in parallel segments. The library cover
This library is a comprehensive Go HTTP client that natively supports middleware, retries, context, proxying, and request tracing, making it a robust choice for complex network operations.
Fasthttp is a high-performance networking framework for Go, designed to maximize throughput and minimize memory overhead in demanding web applications. It functions as a specialized HTTP server and client library that prioritizes efficient resource management, allowing developers to build scalable services capable of handling massive concurrent traffic with minimal garbage collection pressure. The library distinguishes itself through a focus on zero-allocation processing and low-level optimization. It achieves this by recycling temporary request and response objects through managed pools and
Fasthttp is a high-performance HTTP client library for Go that provides efficient request handling and includes built-in support for retries, though it uses a non-standard API that differs from the default net/http package.
A Go "clone" of the great and famous Requests library
This library provides a simplified, human-friendly interface for making HTTP requests in Go, offering built-in support for common tasks like cookie management and request context, though it lacks some of the advanced middleware and tracing features found in more complex alternatives.
A Go HTTP client library for creating and sending API requests
This library provides a fluent, functional interface for building and executing API requests in Go, though it lacks some of the advanced built-in features like automatic retries or middleware pipelines found in more comprehensive clients.
Plugin-driven, extensible HTTP client toolkit for Go
This is a plugin-driven HTTP client library for Go that natively supports middleware, retries, and modular extensions, making it a strong fit for developers needing a flexible and extensible request toolkit.
This project provides a collection of extensions for the OpenTelemetry Go software development kit, serving as a toolkit for automated instrumentation, context propagation, and telemetry pipeline management. It enables the capture of traces, metrics, and logs across distributed systems by providing unified interfaces that decouple data collection from specific backend storage or analysis platforms. The project distinguishes itself through its ability to inject telemetry collection into popular frameworks and libraries without requiring manual source code modifications. It maintains request co
This repository provides instrumentation and middleware for observability rather than serving as a general-purpose HTTP client library for making network requests.
go-grpc-middleware is a gRPC middleware framework for Go designed to handle cross-cutting concerns, reliability, and observability. It provides a collection of interceptors that can be used to modify inbound and outbound calls to enforce system-wide policies. The framework distinguishes itself through specialized toolkits for service reliability, including automatic retry logic for failed client calls and panic recovery mechanisms that translate runtime crashes into standard error responses. It also features an observability suite for collecting performance metrics and recording request activ
This is a middleware framework specifically for gRPC services rather than a general-purpose HTTP client library, making it a specialized building block for RPC communication instead of the requested tool.
Zipkin is an open-source distributed tracing system designed to collect, store, and visualize timing data across complex service architectures. It provides a platform for monitoring request lifecycles, enabling developers to identify latency bottlenecks and performance issues by tracking operations as they move through heterogeneous service environments. The system distinguishes itself through a standardized data model and a pluggable storage architecture that supports various backend databases. It utilizes sampling strategies to manage telemetry volume and employs asynchronous collection met
Zipkin is a distributed tracing and observability system used to monitor request lifecycles, rather than an HTTP client library for executing network requests.
go-restful is a framework for building RESTful web services in Go. It functions as a toolkit for managing API endpoints, providing a request router that maps incoming HTTP requests to handler functions using path parameters and custom URL patterns. The framework includes a data conversion layer that transforms Go structures into JSON or XML formats for request and response bodies. It also provides a system for organizing related web services into containers to manage endpoint prefixing and shared configuration. The project covers request lifecycle management through middleware filters for va
This is a framework for building RESTful web services and API servers rather than an HTTP client library for making outgoing network requests.
Fiber is a high-performance web framework designed for building scalable HTTP services with minimal memory overhead. It provides a comprehensive runtime environment for managing the full request lifecycle, utilizing an optimized radix tree for high-speed route matching and an object pooling system to reduce garbage collection pressure during traffic processing. The framework distinguishes itself through its multi-process architecture, which supports prefork socket reuse to distribute incoming traffic across all available CPU cores. It offers a modular approach to application development, feat
Fiber is a web framework for building HTTP servers rather than a client library for making outgoing network requests, making it the wrong tool for this specific intent.
Dapr is a distributed application runtime that provides a sidecar-based infrastructure layer for building resilient microservices and event-driven applications. By utilizing a sidecar proxy pattern, it abstracts complex infrastructure tasks into standardized, network-accessible APIs, allowing developers to focus on application logic while the runtime handles service discovery, state management, and secure communication. The platform distinguishes itself through a pluggable component architecture and language-agnostic design, enabling services written in any programming language to interact wi
Dapr is a distributed application runtime and sidecar proxy for microservices rather than an HTTP client library for making network requests within Go code.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| go-resty/resty | 11.7K | Go | MIT | |
| imroc/req | 4.8K | Go | MIT | |
| valyala/fasthttp | 23.3K | Go | mit | |
| levigross/grequests | 2.2K | Go | Apache-2.0 | |
| dghubble/sling | 1.7K | Go | MIT | |
| h2non/gentleman | 1.1K | Go | MIT | |
| open-telemetry/opentelemetry-go-contrib | 1.6K | Go | Apache-2.0 | |
| grpc-ecosystem/go-grpc-middleware | 6.7K | Go | Apache-2.0 | |
| openzipkin/zipkin | 17.4K | Java | Apache-2.0 | |
| emicklei/go-restful | 5.1K | Go | MIT |