10 个不稳定版本 (3 个重大更新)
0.3.0 | 2021年1月28日 |
---|---|
0.2.0 | 2020年10月23日 |
0.1.6 | 2020年3月13日 |
0.0.1 | 2020年2月18日 |
#23 在 #rpc-server
每月下载量 307
20KB
471 行
将 JSON RPC 功能引入 warp 世界。
过滤器
- json_rpc
- 要求请求遵循基本的 JSON RPC 规范。
- 您必须在使用以下过滤器之前调用此过滤器。
- method
- 要求请求 RPC 方法提供名称。
- params
- 提取 RPC 参数。
示例
use warp_json_rpc::filters as json_rpc;
use futures::future;
use warp::Filter as _;
#[tokio::main]
async fn main() {
// create Filter
let route = warp::filters::path::path("rpc")
// ## Point 1
// This filter is required.
.and(json_rpc::json_rpc())
.and(json_rpc::method("add"))
.and(json_rpc::params::<(usize, usize)>())
// `res.success` returns `impl Reply` which represents JSON RPC Response
.map(|res: Builder, (lhs, rhs)| res.success(lhs + rhs).unwrap());
// ## Point 2
// You **MUST** wraps root `Filter` by `warp_json_rpc::service` function.
let svc = warp_json_rpc::service(route);
let make_svc = hyper::service::make_service_fn(move |_| future::ok::<_, Infallible>(svc));
hyper::Server::bind(&([127, 0, 0, 1], 3030).into())
.serve(make_svc)
.await
.unwrap();
}
依赖项
~9–19MB
~253K SLoC