onnov / json-rpc-server
json rpc 服务器
Requires
- php: >=7.4
- ext-json: *
- netresearch/jsonmapper: ^4
- opis/json-schema: ^2
- psr/log: >=1
- symfony/dependency-injection: >=3
- symfony/service-contracts: >=1
Requires (Dev)
README
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 使用授权,但某些方法应在未经授权的情况下可用,例如 login 或 authCheck,则可以将这些方法列举在第四个参数 $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
中