#json-rpc #rpc #warp #json-rpc-server #rpc-server

warp-json-rpc

为 warp 提供的 JSON RPC 服务器扩展

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

Download history 58/week @ 2024-04-01 34/week @ 2024-04-08 14/week @ 2024-04-15 23/week @ 2024-04-22 10/week @ 2024-04-29 9/week @ 2024-05-06 15/week @ 2024-05-13 13/week @ 2024-05-20 18/week @ 2024-05-27 15/week @ 2024-06-03 14/week @ 2024-06-10 18/week @ 2024-06-17 19/week @ 2024-06-24 28/week @ 2024-07-01 176/week @ 2024-07-08 81/week @ 2024-07-15

每月下载量 307

MIT/Apache

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