reqwest_dav
Async WebDAV client for Rust built on tokio and reqwest
Repository Health
Technical Analysis
reqwest_dav is an asynchronous WebDAV client for Rust, layered on top of the popular reqwest HTTP client and the tokio runtime. It gives Rust applications a small, typed API for talking to WebDAV servers such as Nextcloud, ownCloud, and other DAV-compatible storage backends.
The library covers the core WebDAV verbs — listing, uploading, downloading, moving, copying, deleting, and creating collections — and supports both Basic and Digest authentication. Built around a fluent ClientBuilder, it keeps setup terse while returning strongly typed responses you can serialize with serde.
What You Get
- A fluent
ClientBuilderfor configuring host and authentication - Async file operations: get, put, move, copy, delete, mkcol, and list
- Basic and Digest authentication support
- Strongly typed responses that serialize cleanly with serde
Common Use Cases
- Syncing files with Nextcloud or ownCloud from a Rust service
- Uploading and downloading assets to any WebDAV-compatible storage
- Listing and managing remote directory trees programmatically
Under The Hood
Architecture - The crate builds a thin protocol layer over reqwest. A ClientBuilder produces a Client holding the base host and an Auth variant (Basic or Digest); each method (list, get, put, mv, cp, delete, mkcol) issues the corresponding WebDAV HTTP request and parses the multistatus/response bodies into typed structs.
Tech Stack - Written in Rust and built on the tokio async runtime and reqwest for transport. It uses serde for (de)serializing responses and handles Digest authentication for servers that require it. The crate exposes an Error type covering transport and protocol failures.
Code Quality - The public surface is small and focused, and the README demonstrates the full workflow with a runnable async example. As a compact single-purpose crate it keeps its API narrow; it has accrued nearly a million downloads on crates.io, indicating solid real-world usage, though development activity is now low.
API Design - The builder pattern keeps client construction readable, and method names mirror the WebDAV verbs developers already know (mv, cp, mkcol), lowering the learning curve. Returning serde-serializable structs makes it easy to log or forward directory listings.