#webdav #tokio-client

reqwest_dav

An async webdav client with tokio and reqwest

20 releases

0.3.3 Mar 2, 2026
0.3.1 Jan 17, 2026
0.2.2 Aug 28, 2025
0.2.1 Apr 21, 2025
0.1.1 Sep 9, 2022

#47 in HTTP client

Download history 13627/week @ 2026-01-22 12517/week @ 2026-01-29 14252/week @ 2026-02-05 12756/week @ 2026-02-12 12499/week @ 2026-02-19 13986/week @ 2026-02-26 13643/week @ 2026-03-05 13499/week @ 2026-03-12 14113/week @ 2026-03-19 16517/week @ 2026-03-26 16134/week @ 2026-04-02 16278/week @ 2026-04-09 17630/week @ 2026-04-16 17370/week @ 2026-04-23 18651/week @ 2026-04-30 16206/week @ 2026-05-07

72,368 downloads per month
Used in 10 crates (6 directly)

MIT/Apache

59KB
1.5K SLoC

Reqwest dav

crates.io Documentation MIT/Apache-2 licensed CI

An async webdav client for rust with tokio and reqwest

Features

  • Authentication
    • Basic
    • Digest
  • Files management
    • Get
    • Put
    • Mv
    • Cp
    • Delete
    • Mkcol
    • List

Examples

use crate::{Auth, ClientBuilder, Depth, Error};

#[tokio::test]
async fn it_works() -> Result<(), Error> {
  
    // build a client
    let client = ClientBuilder::new()
        .set_host("http://server".to_string())
        .set_auth(Auth::Basic("username".to_owned(), "password".to_owned()))
        .build()?;

    // list files
    println!(
        "{}",
        serde_json::to_string(&client.list("/remote.php/dav/files/username", Depth::Infinity).await?).unwrap()
    );
  
    // delete a file
    client.delete("1.txt").await.unwrap();

    Ok(())
}

Tips

  • set_host can use "http://server/remote.php/dav/files/username", but the list method return value from server usually the full path excluding the protocol and domain name, like /remote.php/dav/files/username/bookmarks.txt, you can use it according to your own server or needs.

Dependencies

~15–33MB
~398K SLoC