graze/guzzle-jsonrpc

Guzzle 的 JSON-RPC 2.0 客户端

3.2.1 2016-02-16 15:18 UTC

This package is auto-updated.

Last update: 2024-08-26 14:51:32 UTC


README

No Maintenance Intended

此项目不再支持,请考虑分支此仓库以进行任何所需的更改。

Master branch build status Coverage Status Quality Score Published version PHP ~5.5 MIT Licensed

此库实现了针对 Guzzle HTTP 客户端的 JSON-RPC 2.0。我们尝试支持 Guzzle 的所有常用版本,包括

您可以根据个人喜好安装,但我们推荐使用 Composer

{
    "require": {
        "graze/guzzle-jsonrpc": "~3.0"
    }
}

文档

<?php
use Graze\GuzzleHttp\JsonRpc\Client;

// Create the client
$client = Client::factory('http://localhost: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'])
]);

异步请求

通过使用 Guzzle Promises 库(Promises/A+ 的实现)支持异步请求。

<?php
use Graze\GuzzleHttp\JsonRpc\Client;

// Create the client
$client = Client::factory('http://localhost: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 Graze\GuzzleHttp\JsonRpc\Client;
use Graze\GuzzleHttp\JsonRpc\Exception\RequestException;

// Create the client with the `rpc_error`
$client = Client::factory('http://localhost: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 许可证 发布。

您可以在 mitLICENSE 中找到此许可证的副本。