23 个版本 (12 个重大更改)
0.13.0 | 2023年9月2日 |
---|---|
0.12.0 | 2023年7月29日 |
0.11.0 | 2022年3月22日 |
0.10.1 | 2021年5月14日 |
0.2.1 | 2019年2月7日 |
206 在 HTTP 服务器
1,851 每月下载量
在 2 crates 中使用
57KB
1.5K SLoC
jsonrpc-v2
一个非常小且非常快的专注于 JSON-RPC 2.0 服务器的框架。
为 hyper
和 actix-web
(1.x, 2.x, 3.x, 4.x) 提供集成。根据需要启用功能 actix-web-v3-integration
,hyper-integration
等。
actix-web-v4-integration
默认启用。如果使用 hyper
或其他 actix-web
版本,请确保添加 default-features = false
。
另外,请参阅 easy-errors
功能标志(默认未启用)。启用此标志将实现 ErrorLike
,任何实现 Display
的内容都将实现该特性,并且显示值将提供在 JSON-RPC 2.0 Error
响应的 message
字段中。
否则,自定义错误应实现 ErrorLike
以将错误映射到 JSON-RPC 2.0 Error
响应。
单个方法处理器是 async
函数,可以接受各种类型的参数(可以从请求中提取的内容,如 Params
或 Data
),并应返回一个 Result<Item, Error>
,其中 Item
可序列化。请参见下面的示例。
用法
use jsonrpc_v2::{Data, Error, Params, Server};
#[derive(serde::Deserialize)]
struct TwoNums {
a: usize,
b: usize,
}
async fn add(Params(params): Params<TwoNums>) -> Result<usize, Error> {
Ok(params.a + params.b)
}
async fn sub(Params(params): Params<(usize, usize)>) -> Result<usize, Error> {
Ok(params.0 - params.1)
}
async fn message(data: Data<String>) -> Result<String, Error> {
Ok(String::from(&*data))
}
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
let rpc = Server::new()
.with_data(Data::new(String::from("Hello!")))
.with_method("sub", sub)
.with_method("message", message)
.finish();
actix_web::HttpServer::new(move || {
let rpc = rpc.clone();
actix_web::App::new().service(
actix_web::web::service("/api")
.guard(actix_web::guard::Post())
.finish(rpc.into_web_service()),
)
})
.bind("0.0.0.0:3000")?
.run()
.await
}
当前版本:0.11.0
许可证:MIT
依赖关系
~2–18MB
~219K SLoC