sbovyrin / jsonrpc
此包已被放弃,不再维护。没有建议替代包。
简化基于 JSON-RPC 的 API 开发的包
2.0.3
2018-06-20 21:58 UTC
Requires
- php: ^7.0
README
此包完全兼容 json-rpc 规范,除了具有
命名参数的请求。
开始使用
示例:你发送 json-rpc 请求
send to Server --> {"jsonrpc": "2.0", "method": "User.get", "params": [1], "id": 1}
请求的字段 method 的值为 User.get,这意味着你想调用 get 方法的服务 User。
// UserService.php namespace app\services; class UserService { // ... /** * Get user by id * @param int $id * @return User|null */ public function get(int $id): ?User { // find user by id // return the user } // ... }
现在你必须创建 JsonRpc\JsonRpc 的实例,并将你的方法存储传递给其构造函数。然后将接收到的 JSON 字符串传递给 exec 方法。
$services = [ 'User' => 'app\services\UserService', // ... ]; $jsonRpc = new JsonRpc\JsonRpc($services) $result = $jsonRpc->exec($jsonRequest);
如果你想要创建 API 文档,你必须调用 getAvailableMethods 方法,该方法返回你的服务定义的公共方法的数组。
$allPublicMethodsOfServices = $jsonRpc->getAvailableMethods(); // return: // [ // 'Auth': [ // [ // "method": "get", // "description": "Get user by id", // "params": [ // "$id: int" // ], // "return": "User|null" // ], // ... // ], // ... // ]
文档
JsonRpc\JsonRpc
__construct
- 使用定义的方法存储(服务)列表初始化 JSON-RPC 客户端
- 参数
$methodStores: 数组
exec
- 执行 JSON-RPC 请求
- 参数
$request: 字符串$beforeFn: 可调用- 默认值: null
- 返回: 数组|void
getAvailableMethods
- 返回您的 API 的文档。扫描所有存储的公共方法及其 phpDocBlock。
- 返回: 数组
getAvailableMethods忽略具有定义的 @internal 键的 phpDocBlock 的方法
可能出现的 JSON-RPC 错误
内部错误
- 解析错误。代码:
-32700。请求的 JSON 不正确。 - 无效请求。代码:
-32600。JSON-RPC 方案字段不正确或方法值具有不正确的模式。 - 找不到方法。代码:
-32601。当请求的方法找不到时出现。 - 传递了无效的参数。代码:
-32602。当传递的参数数量或类型不正确时出现。
服务器错误
- 出了点问题。代码:
-32000。任何服务器错误。 - 验证失败。代码:
-32001。实体验证失败。 - 禁止。代码:
-32002。用户没有访问操作的权限。 - 未找到。代码:
-32003。实体未找到。
问题
如果您发现了一个错误,请在我的GitHub问题跟踪器上提交一个问题:我的GitHub问题跟踪器。