1 个不稳定版本
0.1.0 | 2022年7月23日 |
---|
#1099 在 HTTP服务器
45KB
1K SLoC
问题细节
此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