#http #web

无std teahttp

WASM的HTTP客户端

4个版本

0.2.1 2024年8月22日
0.2.0 2024年8月22日
0.1.1 2024年8月21日
0.1.0 2024年8月21日

#191HTTP客户端

Download history 127/week @ 2024-08-15

每月下载量133

MIT 许可证

16KB
291

teahttpd

一个简单的(fetch包装器)WASM HTTP客户端

请提出一些建议,因为这个胶带飞机是以“应该工作,会工作,它确实工作!”为动机运行的!

如何使用

    let _res: web_sys::Request = teahttp::TeaRequest::get("/api/something")
        .header("Accept", "application/json")?
        .clone()
        .slice_body(&encoded)
        .invoke()
        .await?;

    let _res: web_sys::Request = teahttp::TeaRequest::post("/api/upload")
        .header("Content-Type", "application/octet-stream")?
        .header("Content-Length", &encoded.len().to_string())?
        .clone()
        .slice_body(&encoded)
        .invoke()
        .await?;

如有必要,待办事项

  • 更好的错误处理
  • serde
  • 自己动手做,包装这个吗?

lib.rs:

teahttp

非常简单,但在WASM环境中运行良好。由于许多HTTP客户端往往会搞砸WebWorker全局,这个受ehttp启发的crate旨在提供帮助。虽然它似乎是一个不错的选择,但许多事情都需要手动完成。

一些示例可以帮助理解问题

    TeaRequest::get("/api/something")
       .invoke()
       .await? // web_sys::Response

    let some_body = b"lorem ipsum dolor si amet";
    TeaRequest::post("/api/upload")
        .header("Content-Length", some_body)?
        .slice_body(some_body.as_slice() /* &[u8] */)
        .invoke()
        .await?

    TeaRequest::post("/api/submit")
        .header("Content-Length", &12.to_string())?
        .str_body("Hello World!" /* &str */)
        .invoke()
        .await?

祝您玩得开心

依赖项

~7–9.5MB
~177K SLoC