# awesome-http

📖 A curated list of HTTP clients for various languages & libraries

> Pull Requests welcomed. Please see the Contributing Guide before opening a Pull Request.

## Programming Languages

- JavaScript
- Python
- Java
- Rust
- Swift
- Haskell
- Go
- C++
- PHP
- Bash/Shell

### JavaScript

Name | Description | GitHub Activity
--- | --- | ---
Axios | Promise based HTTP client for the browser and node.js |
node-fetch | A light-weight module that brings the Fetch API to Node.js |
Got | 🌐 Human-friendly and powerful HTTP request library for Node.js |
superagent | Ajax for Node.js and browsers (JS HTTP client) |
Needle | Nimble, streamable HTTP client for Node.js. With proxy, iconv, cookie, deflate & multipart support. |

### Python

Name | Description | GitHub Activity
--- | --- | ---
Requests | A simple, yet elegant, HTTP library. |
urllib3 | Python HTTP library with thread-safe connection pooling, file post support, user friendly, and more. |
httplib2 | Small, fast HTTP client library for Python. Features persistent connections, cache, and Google App … |
GRequests | Requests + Gevent = <3 |
Uplink | A Declarative HTTP Client for Python |

### Java

Name | Description | GitHub Activity
--- | --- | ---
Eclipse Jetty | Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets… |
OkHttp | Square’s meticulous HTTP client for the JVM, Android, and GraalVM. |
Heritrix | Heritrix is the Internet Archive’s open-source, extensible, web-scale, archival-quality web crawler… |
Apache HttpClient | Mirror of Apache HttpClient |
Google HTTP Client Library | Google HTTP Client Library for Java |
Http Request | Java HTTP Request Library |

### Rust

Name | Description | GitHub Activity
--- | --- | ---
reqwest | An easy and powerful Rust HTTP Client |
hyper | An HTTP library for Rust |
Isahc | The practical HTTP client that is fun to use. |
Surf | Fast and friendly HTTP client framework for async Rust |
curl-rust | Rust bindings to libcurl |

### Swift

Name | Description | GitHub Activity
--- | --- | ---
Alamofire | Elegant HTTP Networking in Swift |
SwiftHTTP | Thin wrapper around NSURLSession in swift. Simplifies HTTP requests. |
Net | Http Request wrapper written in Swift |
Moya | Network abstraction layer written in Swift. |
Just | Swift HTTP for Humans |
Kingfisher | A lightweight, pure-Swift library for downloading and caching images from the web. |

### Haskell

Name | Description | GitHub Activity
--- | --- | ---
Req | An HTTP client library |
http-client | An HTTP client engine, intended as a base layer for more user-friendly packages. |
servant-client | Main repository for the servant libraries — DSL for describing, serving, querying, mocking, documen… |
http-streams | Haskell HTTP client library for use with io-streams |

### Go

Name | Description | GitHub Activity
--- | --- | ---
Req | Simple Go HTTP client with Black Magic |
Resty | Simple HTTP and REST client library for Go |
Sling | A Go HTTP client library for creating and sending API requests |
requests | A golang HTTP client library. Salute to python requests. |

### C++

Name | Description | GitHub Activity
--- | --- | ---
Apache Serf | Mirror of Apache Serf |
Curl for People | C++ Requests: Curl for People, a spiritual port of Python Requests. |
cpp-netlib | The C++ Network Library Project – cross-platform, standards compliant networking library. |
Webcc | Lightweight C++ HTTP client and server library based on Asio for embedding purpose. |
Proxygen | A collection of C++ HTTP libraries including an easy to use HTTP server. |
cpp-httplib | A C++ header-only HTTP/HTTPS server and client library |
NFHTTP | A cross platform C++ HTTP library that interfaces natively to other platforms. |
EasyHttp | A cross-platform HTTP client library with a focus on usability and speed |

### PHP

Name | Description | GitHub Activity
--- | --- | ---
Guzzle | Guzzle, an extensible PHP HTTP client |
HTTPlug | HTTPlug, the HTTP client abstraction for PHP |
HTTP Client | Async HTTP/1.1+2 client for PHP based on Amp. |
SendGrid HTTP Client | SendGrid’s PHP HTTP Client for calling APIs |
Buzz | PHP’s lightweight HTTP client |

### Bash/Shell

Name | Description | GitHub Activity
--- | --- | ---
HTTPie | As easy as /aitch-tee-tee-pie/ 🥧 Modern, user-friendly command-line HTTP client for the API era. J… |
curl | A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, … |
aria2 | aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in c… |
HTTP Prompt | An interactive command-line HTTP and API testing client built on top of HTTPie featuring autocomple… |
Resty | Little command line REST client that you can use in pipelines (bash or zsh). |
Ain | A HTTP API client for the terminal |

http.md Github