A D language HTTP client library inspired by Python's requests, offering a simple high-level API with low memory footprint and high performance.
dlang-requests is a native D programming language implementation of an HTTP client library, designed to provide a user-friendly interface similar to Python's popular requests library. It supports HTTP, HTTPS, and FTP protocols, focusing on efficiency, a small memory footprint, and ease of use for network programming in D.
D developers who need a simple, high-performance HTTP/HTTPS/FTP client for applications ranging from web scraping and API interactions to file transfers and parallel request execution.
Developers choose dlang-requests for its Python-requests-inspired intuitive API combined with native D performance, support for both blocking and non-blocking I/O via vibe.d integration, and features like request pooling, interceptors, and streaming responses that handle large data efficiently.
dlang http client library inspired by python-requests
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Functions like getContent and postContent mimic Python's requests library, allowing quick document retrieval and posting with minimal code, as shown in the simple request examples.
Supports lazy loading of large downloads as input ranges with useStreaming, enabling handling of big files without full memory consumption, demonstrated in the streaming response section.
Includes a request pool with worker threads for executing multiple HTTP requests concurrently, improving throughput for batch operations, as detailed in the requests pool examples.
Chainable middleware allows logging, caching, or request modification without core changes, providing extensibility through classes like LoggerInterceptor.
Optional use of vibe.d sockets enables non-blocking I/O in fiber-based applications, allowing HTTP calls to block only the current fiber, not the thread, as shown in the vibe.d example.
The request pool feature does not work under vibe.d, restricting its use in fully non-blocking applications that rely on this concurrency model, as admitted in the pool limitations section.
Requires manual installation and configuration of OpenSSL on Windows, with specific steps like downloading from slproweb, which can be a deployment hurdle as noted in the Windows SSL notes.
Different configuration methods for vibe.d integration between versions 1.x and 2.x (e.g., subConfigurations vs. dependencies) lead to confusion and potential migration issues for users.
Lacks support for modern protocols like HTTP/2 or WebSockets, and has a smaller community compared to HTTP clients in more popular languages, limiting third-party extensions and advanced features.