#json-rpc #http-server #rpc-server #server #rpc #json-rpc-server

tetsy-jsonrpc-http-server

Tetsy Rust 使用 JSONRPC 2.0 的 http 服务器

显示包…

3 个稳定版本

15.1.0 2021 年 3 月 13 日
14.2.1 2021 年 3 月 1 日

#38 in #jsonrpc

Download history 32/week @ 2024-03-11 39/week @ 2024-03-18 49/week @ 2024-03-25 100/week @ 2024-04-01 26/week @ 2024-04-08 29/week @ 2024-04-15 36/week @ 2024-04-22 24/week @ 2024-04-29 26/week @ 2024-05-06 35/week @ 2024-05-13 20/week @ 2024-05-20 34/week @ 2024-05-27 31/week @ 2024-06-03 29/week @ 2024-06-10 21/week @ 2024-06-17 34/week @ 2024-06-24

116 每月下载次数
用于 25 个包 (2 直接)

MIT 许可证

190KB
5.5K SLoC

tetsy-jsonrpc-http-server

Rust 使用 JSON-RPC 2.0 的 http 服务器。

文档

示例

Cargo.toml

[dependencies]
tetsy-jsonrpc-http-server = "14.2"

main.rs

use tetsy_jsonrpc_http_server::*;
use tetsy_jsonrpc_http_server::tetsy_jsonrpc_core::*;

fn main() {
	let mut io = IoHandler::default();
	io.add_method("say_hello", |_| {
		Ok(Value::String("hello".into()))
	});

	let server = ServerBuilder::new(io)
		.cors(DomainsValidation::AllowOnly(vec![AccessControlAllowOrigin::Null]))
		.start_http(&"127.0.0.1:3030".parse().unwrap())
		.expect("Unable to start RPC server");

	server.wait();
}

您现在可以在一个终端中运行以下命令来测试上述服务器:cargo run,并在另一个终端向您的服务器发出以下 POST 请求

$ curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "say_hello", "id":123 }' 127.0.0.1:3030

服务器将相应地返回以下内容

{"jsonrpc":"2.0","result":"hello","id":123}

如果您省略上述任何字段或调用不同的方法,您将获得一个有信息的错误消息

$ curl -X POST -H "Content-Type: application/json" -d '{"method": "say_hello", "id":123 }' 127.0.0.1:3030
{"error":{"code":-32600,"message":"Unsupported JSON-RPC protocol version"},"id":123}
$ curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "say_bye", "id":123 }' 127.0.0.1:3030
{"jsonrpc":"2.0","error":{"code":-32601,"message":"Method not found"},"id":123}

依赖项

~14MB
~251K SLoC