onnov / json-rpc-server

json rpc 服务器

v4.0.5 2024-01-15 19:40 UTC

This package is auto-updated.

Last update: 2024-09-15 21:25:01 UTC


README

Scrutinizer Code Quality

Json RPC 2.0 服务器

安装

Composer (推荐) 使用 Composer 从 Packagist 安装此库:onnov/json-rpc-server

从您的项目目录运行以下命令以添加依赖项

composer require onnov/json-rpc-server

或者,要加载 dev-master 分支,直接将依赖项添加到 composer.json 文件中。

composer.json

 "repositories": [
        {
            "type": "git",
            "url": "git@github.com:onnov/json-rpc-server.git"
        }
    ],
    "require": {
        "onnov/json-rpc-server": "dev-master"
    },

使用

对于 symfony 的自动加载,需要在 services.yaml 文件中添加以下内容

  Onnov\JsonRpcServer\JsonRpcHandler:
    autowire: true

文件 services.yaml

授权

Json RPC 服务器不处理授权。如果需要授权,以任何方式授权用户,并将授权结果传递给 JsonRpcHandler::run 方法的第三个参数 $resultAuth,形式为 true 或 false。

此标志仅用于让 Json RPC 服务器在未授权时返回标准响应。

如果不需要授权,只需将 true 传递给第三个参数 $resultAuth

如果 API 使用授权,但某些方法应在未经授权的情况下可用,例如 loginauthCheck,则可以将这些方法列举在第四个参数 $methodsWithoutAuth 中,形式为数组

$methodsWithoutAuth = ['login', 'authCheck'];

这些方法将不受授权限制。

方法工厂

通过接口 ApiFactoryInterface 创建工厂,在 getSubscribedServices 方法中列出所有使用的类

public static function getSubscribedServices(): array
    {
        return [
            'Bankruptcy' => Bankruptcy::class,
            'Bankrupt' => Bankrupt::class,
        ];
    }

启动 json rpc 处理器

创建 JsonRpcHandler 对象,将其传递给方法 run( ApiFactoryInterface $apiFactory, string $json, bool $resultAuth, array $methodsWithoutAuth = [], bool $responseSchemaCheck = false )

该方法返回 JSON 字符串

use Onnov\JsonRpcServer\JsonRpcHandler;
use Onnov\JsonRpcServer\Model\ResultAuthModel;

$authRes = (new ResultAuthModel())->setSuccess(true);
$apiFactory = new ApiFactory()

$server = new JsonRpcHandler();
$res = $server->run(
    $apiFactory,
    $json,
    $resultAuth,
    $methodsWithoutAuth
    $responseSchemaCheck
)

JSON RPC 方法

API 方法通过接口 ApiMethodInterface.php 创建。每个包含使用方法的类应在 ApiFactory 中描述。

jsonRPC 请求可能如下所示

{
  "jsonrpc": "2.0",
  "method": "Auth.check",
  "params": null,
  "id": 911
}

根据 API 方法返回的内容,构建响应。所有由方法返回的内容都包含在 result

验证

https://opis.io/json-schema