php-sword / jsonrpc
适用于 Guzzle 的 JSON-RPC 2.0 客户端
v4.0.4
2023-08-09 13:59 UTC
Requires
- php: ^7.4|^8.0
- ext-json: *
- guzzlehttp/guzzle: ^6.0|^7.0
- guzzlehttp/promises: ^1.0|^2.0
- psr/http-message: ^1.0|^2.0
This package is auto-updated.
Last update: 2024-09-09 16:22:16 UTC
README
此项目不再支持,请考虑 Fork 此仓库以进行任何所需的更改。
{ "require": { "graze/guzzle-jsonrpc": "~3.0" } }
文档
<?php use Sword\JsonRpc\Client; // Create the client $client = Client::factory('https://:8000'); // Send a notification $client->send($client->notification('method', ['key'=>'value'])); // Send a request that expects a response $client->send($client->request(123, 'method', ['key'=>'value'])); // Send a batch of requests $client->sendAll([ $client->request(123, 'method', ['key'=>'value']), $client->request(456, 'method', ['key'=>'value']), $client->notification('method', ['key'=>'value']) ]);
异步请求
<?php use Sword\JsonRpc\Client; // Create the client $client = Client::factory('https://:8000'); // Send an async notification $promise = $client->sendAsync($client->notification('method', ['key'=>'value'])); $promise->then(function () { // Do something }); // Send an async request that expects a response $promise = $client->sendAsync($client->request(123, 'method', ['key'=>'value'])); $promise->then(function ($response) { // Do something with the response }); // Send a batch of requests $client->sendAllAsync([ $client->request(123, 'method', ['key'=>'value']), $client->request(456, 'method', ['key'=>'value']), $client->notification('method', ['key'=>'value']) ])->then(function ($responses) { // Do something with the list of responses });
在 RPC 错误上抛出异常
如果您收到 RPC 错误响应,可以在客户端构造函数中添加选项 [rpc_error => true]
来抛出异常。
<?php use Sword\JsonRpc\Client; use Sword\JsonRpc\Exception\RequestException; // Create the client with the `rpc_error` $client = Client::factory('https://:8000', ['rpc_error'=>true]); // Create a request $request = $client->request(123, 'method', ['key'=>'value']); // Send the request try { $client->send($request); } catch (RequestException $e) { die($e->getResponse()->getRpcErrorMessage()); }
贡献
我们接受通过 Pull Request 对源代码的贡献,但在合并之前必须包含单元测试。
~ $ make deps ~ $ make lint test
许可
本库的内容由 Nature Delivered Ltd 根据 MIT 许可证 发布。