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