1 个不稳定版本
0.1.0 | 2019年12月10日 |
---|
#223 在 #json-rpc
58 每月下载量
用于 jsonrpc-v2
10KB
213 行
jsonrpc-v2
一个非常小且非常快的以JSON-RPC 2.0服务器为核心的框架。
提供对 hyper
和 actix-web
的集成。根据需要启用 actix-integration
或 hyper-integration
功能。
actix
默认启用。如果您使用 hyper
,请确保添加 default-features = false
。
还可以查看 easy-errors
功能标志(默认不启用)。启用此标志将为实现 Display
的任何内容实现 ErrorLike
,并将显示值提供在JSON-RPC 2.0 Error
响应的 message
字段中。
否则,自定义错误应实现 ErrorLike
以将错误映射到JSON-RPC 2.0 Error
响应。
单独的方法处理程序是可接受各种类型参数的 async
函数(可以从请求中提取的事物,如 Params
或 Data),应返回一个
Result<Item, Error>
,其中 Item
是可序列化的。请参阅以下示例。
用法
use jsonrpc_v2::*;
#[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))
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
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()?;
Ok(())
}
当前版本:0.4.1
许可证:MIT
依赖项
~1.5MB
~36K SLoC