sbovyrin/jsonrpc

此包已被放弃,不再维护。没有建议替代包。

简化基于 JSON-RPC 的 API 开发的包

安装: 330

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:

2.0.3 2018-06-20 21:58 UTC

This package is not auto-updated.

Last update: 2019-05-09 22:38:53 UTC


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问题跟踪器