Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. D
  3. dlang-requests

dlang-requests

BSL-1.0Dv2.2.1

A D language HTTP client library inspired by Python's requests, offering a simple high-level API with low memory footprint and high performance.

GitHubGitHub
159 stars32 forks0 contributors

What is dlang-requests?

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.

Target Audience

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.

Value Proposition

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.

Overview

dlang http client library inspired by python-requests

Use Cases

Best For

  • Building D applications that require a simple, high-level API for HTTP/HTTPS/FTP requests similar to Python's requests library.
  • Handling large file downloads or streaming responses efficiently without loading entire documents into memory.
  • Executing multiple HTTP requests in parallel using a worker thread pool for improved throughput.
  • Integrating HTTP client functionality into vibe.d applications with non-blocking I/O for fiber-based concurrency.
  • Implementing middleware chains for logging, caching, or modifying requests and responses via interceptors.
  • Performing FTP operations including file uploads, downloads, and directory listings within a unified HTTP-like API.

Not Ideal For

  • Projects requiring HTTP/2 or WebSocket support out of the box, as dlang-requests is limited to HTTP/1.1, HTTPS, and FTP.
  • Applications built entirely on vibe.d that need parallel request pooling, since the pool feature does not work under vibe.d as per the documentation.
  • Teams deploying on Windows without pre-installed OpenSSL, due to the manual steps required for SSL configuration highlighted in the README.
  • Developers needing advanced authentication methods like OAuth or digest auth, as only Basic Authentication is natively supported.

Pros & Cons

Pros

Intuitive High-Level API

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.

Efficient Streaming Responses

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.

Parallel Request Execution

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.

Flexible Interceptor System

Chainable middleware allows logging, caching, or request modification without core changes, providing extensibility through classes like LoggerInterceptor.

vibe.d Integration

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.

Cons

Limited vibe.d Pool Compatibility

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.

Complex SSL Setup on Windows

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.

API Version Fragmentation

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.

Ecosystem and Protocol Gaps

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.

Frequently Asked Questions

Quick Stats

Stars159
Forks32
Contributors0
Open Issues10
Last commit2 months ago
CreatedSince 2016

Tags

#d#d-language#network-library#dlang#api-client#ssl#streaming#vibe-d#web-scraping#http-client#ftp-client

Built With

O
OpenSSL
v
vibe.d
D
D

Included in

D748
Auto-fetched 17 hours ago

Related Projects

arsdarsd

This is a collection of modules that I've released over the years. Most of them stand alone, or have just one or two dependencies in here, so you don't have to download this whole repo.

Stars563
Forks130
Last commit26 days ago
libasynclibasync

Cross-platform event loop library of asynchronous objects

Stars148
Forks29
Last commit2 years ago
serverinoserverino

Small and ready-to-go http server. Support for websockets included.

Stars78
Forks6
Last commit2 months ago
Handy-HttpdHandy-Httpd

Extremely lightweight HTTP server for D.

Stars38
Forks11
Last commit3 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub