json-rpc/server

0.1.0 2022-08-29 21:28 UTC

This package is auto-updated.

Last update: 2024-09-29 06:03:22 UTC


README

该库提供遵循2.0规范的JSON-RPC服务器。

不稳定

版本 0.x 不稳定,API可能会更改。

要求

  • PHP >=8.1

安装

使用composer安装库

composer require json-rpc/server

使用方法

实现 HandlerResolver 接口以向服务器提供方法处理器。创建服务器并传递处理器解析器。之后,您可以使用 respond 服务器方法调用方法。请求和响应都必须是JSON字符串。如果服务器没有响应,将返回空字符串。

<?php

/**
 * Handler resolver
 */
final class CustomHandlerResponse implements \JsonRpc\HandlerResolver
{
    /**
    * @param array<string,\JsonRpc\RequestHandler|\JsonRpc\NotificationHandler> $handlers
     */
    public function __construct(private array $handlers = [])
    {}

    public function resolve(string $method) : \JsonRpc\RequestHandler|\JsonRpc\NotificationHandler{
        if (!array_key_exists($method, $this->handlers)) {
            throw new \JsonRpc\MethodHandlerNotFound($method);
        }

        return $this->handlers[$method];
    }
}

/**
* "sum" method handler
 */
final class SumMethodHandler implements \JsonRpc\RequestHandler {
    public function handle(\JsonRpc\Request\Request $request): int
    {
        return $request->params[0] + $request->params[1];
    }
}

$request = <<<JSON
    {
        "jsonrpc": "2.0",
        "method": "sum",
        "params": [1,2],
        "id": 1
    }
JSON;

$resolver = CustomHandlerResolver([
    'sum' => new SumMethodHandler(),
]);
$server = new Server($resolver);
$response = $server->respond($request);

/**
 * {
 *  "jsonrpc": "2.0",
 *  "result": 3,
 *  "id": 1
 * }
 */

开发

  1. 构建开发容器

    make buid
  2. 如有需要,修改 .env 文件。

  3. 容器中的 sh

    make sh

从容器内部,您可以使用各种 make 脚本

  • make test — 运行PHPUnit测试。
  • make test-coverage — 生成 ./coverage 目录中的代码覆盖率报告。
  • make analyse — 运行PHPStan静态代码分析。
  • make format — 运行PHP-CS-Fixer代码格式化工具。
  • make format-preview — 在格式化之前预览PHP-CS-Fixer输出。

许可证

MIT