5 个版本

0.2.0 2024 年 3 月 3 日
0.1.1 2023 年 8 月 15 日
0.1.0 2023 年 8 月 12 日
0.1.0-alpha.22023 年 8 月 10 日
0.1.0-alpha.12023 年 8 月 7 日

HTTP 客户端 中排名 212

Download history 5/week @ 2024-03-11 9/week @ 2024-04-01

每月下载量 115

MIT 许可证

40KB
622

restless

ci status book nightly docs nightly docs latest test coverage crate version

REST API 包装器,减少痛苦。此特质公开辅助特质,让您可以通过特质实现来定义您的 API。如果您在前后端都使用 Rust,则非常有用,可以删除冗余代码。类似于 OpenAPI 等标准,但使用 Rust 特质系统。特质实现为您免费提供 API 客户端。

示例

如果您构建了一个封装了关于您的 REST 请求所有信息的有用类型,例如这个

/// GET /api/v1/users/:name/documents/:id
pub struct UserDocument {
    user: String,
    document: Uuid,
}

那么您可以为此类型实现 GetRequest 特质并使用 RequestMethod 标记。

use restless::{GetRequest, method::Get};

impl GetRequest for UserDocument {
    type Response = Json<Document>;
    type Query = ();

    fn path(&self) -> Cow<'_, str> {
        format!("api/v1/users/{}/documents/{}", self.user, self.document).into()
    }

    fn query(&self) -> Self::Query {}
}

impl RequestMethod for UserDocument {
    type Method = Get<Self>;
}

现在您可以使用内置客户端进行此类请求。

客户端

此包通过启用相应的功能提供与以下 HTTP 客户端和框架的集成

名称 描述
reqwest 使用 reqwest 包进行 HTTP 请求。
gloo 使用 gloo_net 包在 WebAssembly Rust 应用程序中进行 HTTP 请求。
yew 在 Yew 前端组件内部进行 HTTP 请求。

许可证

MIT,见 LICENSE.md

依赖关系

~0.3–4.5MB
~82K SLoC