5 个版本 (3 个重大更改)
0.4.0 | 2023年12月31日 |
---|---|
0.3.0 | 2022年11月28日 |
0.2.2 | 2022年4月16日 |
0.2.1 | 2022年1月21日 |
0.1.0 | 2021年8月28日 |
#467 in 编码
每月下载量:93
用于 4 crates
22KB
430 代码行
axum-msgpack
axum-msgpack
为 axum 添加 MessagePack 功能。
有关此crate的更多信息,请参阅crate 文档。
功能
- 从请求/响应序列化和反序列化 MessagePack
使用示例
use axum_msgpack::MsgPack;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
struct User {
pub name: String,
#[serde(with = "serde_bytes")]
pub data: Vec<u8>
}
// axum handler | MsgPack
async fn get_handler() -> MsgPack<User> {
let user = User {
name: "steve".to_string(),
data: vec![0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
};
MsgPack(user)
}
// axum handler | MsgPack
async fn post_handler(MsgPack(user): MsgPack<User>) -> Html<String> {
let string = format!("<h1>{:?}</h1>", user.name);
Html(string)
}
// axum handler | MsgPackRaw
async fn get_handler_raw() -> MsgPackRaw<User> {
let user = User {
name: "steve".to_string(),
data: vec![0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
};
MsgPackRaw(user)
}
// axum handler | MsgPackRaw
async fn post_handler_raw(MsgPackRaw(user): MsgPackRaw<User>) -> Html<String> {
let string = format!("<h1>{:?}</h1>", user.name);
Html(string)
}
序列化/反序列化 MsgPack 的依赖项
serde = { version = "1.0", features = ["derive"] }
serde_bytes = "0.11"
为了正确打包数组,请记得在结构体成员中添加 #[serde(with = "serde_bytes")]
。
安全性
此 crate 使用 #![forbid(unsafe_code)] 确保所有内容都在 100% 安全的 Rust 中实现。
许可证
本项目采用 MIT 许可证。
依赖项
~6–8.5MB
~148K SLoC