33个稳定版本 (15个主要版本)

18.0.0 2021年7月20日
17.1.0 2021年6月7日
17.0.0 2021年1月20日
16.0.0 2020年12月14日
0.1.0 2016年1月19日

#17 in HTTP服务器

Download history 17603/week @ 2024-03-14 19816/week @ 2024-03-21 19323/week @ 2024-03-28 21557/week @ 2024-04-04 22998/week @ 2024-04-11 24866/week @ 2024-04-18 21684/week @ 2024-04-25 21182/week @ 2024-05-02 21253/week @ 2024-05-09 19155/week @ 2024-05-16 16060/week @ 2024-05-23 19845/week @ 2024-05-30 21257/week @ 2024-06-06 21319/week @ 2024-06-13 19192/week @ 2024-06-20 15855/week @ 2024-06-27

81,680 每月下载量
用于 104 个软件包 (直接使用32个)

MIT 许可

190KB
5.5K SLoC

jsonrpc-http-server

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

文档

示例

Cargo.toml

[dependencies]
jsonrpc-http-server = "15.0"

main.rs

use jsonrpc_http_server::*;
use jsonrpc_http_server::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}

依赖关系

~10–21MB
~277K SLoC