1 个不稳定版本

0.1.0 2022年7月23日

#1099HTTP服务器

MIT 许可证

45KB
1K SLoC

问题细节

Build status Crates.io Documentation

此crate提供Siren超媒体规范的实现。

示例用法

以下是一个有效的Axum处理器,它返回Siren规范中的示例子集

async fn example() -> http_siren::Response<OrderProperties> {
    http_siren::Document::new(OrderProperties {
        order_number: 42,
        item_count: 3,
        status: "pending".to_owned(),
    })
    .with_class("order")
    .with_embedded_link(
        http_siren::Link::new("http://api.x.io/orders/42/items")
            .with_class("items")
            .with_class("collection")
            .with_rel("http://x.io/rels/order-items"),
    ).into()
}

#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
struct OrderProperties {
    pub order_number: u32,
    pub item_count: u32,
    pub status: String,
}

当与支持的HTTP服务器一起使用时,这将自动生成正确的JSON响应,并将Content-Type头设置为正确的值 application/vnd.siren+json

支持的HTTP服务器

目前此功能仅支持以下HTTP服务器

有关与不同HTTP服务器一起使用的示例,请参阅示例目录

功能

HTTP服务器支持位于适当的HTTP服务器特性标志之后。因此,您需要启用您使用的HTTP服务器的正确特性。

目前支持的功能包括

  • axum - 对于Axum HTTP服务器。

安全性

此crate使用#![forbid(unsafe_code)]来确保所有内容都在100%安全的Rust中实现。

最低支持的Rust版本

http_siren的MSRV是1.60.0。然而,与其一起使用的HTTP服务器可能需要更高的版本。

许可证

本项目采用MIT许可证。

贡献

除非您明确表示,否则您提交的任何有意包含在http_siren中的贡献,均应按MIT许可证授权,不附加任何额外条款或条件。

依赖项

~2–12MB
~132K SLoC