moaction/jsonrpc-bundle

Jsonrpc 服务器和客户端 Symfony2 扩展包

v1.1 2013-12-20 11:04 UTC

This package is not auto-updated.

Last update: 2024-09-24 01:33:02 UTC


README

Symfony2 扩展包,实现了 JSON-Rpc 2.0 协议

http://www.jsonrpc.org/specification

用法

  1. 创建一个继承自 \Moaction\JsonrpcBundle\Controller\JsonrpcController 的控制器
  2. 为 'execute' 方法添加路由
  3. 添加一些带有 'Method' 后缀的公共方法
  4. 享受魔法吧!

服务器示例

控制器

class ApiController extends \Moaction\JsonrpcBundle\Controller\JsonrpcController {
  public function getUserMethod($id) {
    return 'User id is ' . $id;
  }

  public function getUserPostMethod($userId, $postId) {
    return array(
     'userId' => $userId,
     'postId' => $postId
    );
  }
}

路由

AcmeBundle_jsonrpc_api:
    pattern:  /api
    defaults: { _controller: AcmeBundle:Api:execute }

请求示例

--> {"jsonrpc": "2.0", "method": "getUser", "params": {"id": 23}, "id": 1}
<-- {"jsonrpc": "2.0", "id": 1, "result": "User id is 23"}
--> {"jsonrpc": "2.0", "method": "getUserPost", "params": {"userId": 23, "postId": 456}, "id": 2}
<-- {"jsonrpc": "2.0", "id": 2, "result": {"userId": 23, "postId": 456}}

客户端示例

关于用法,请查看 moaction/jsonrpc-client 的示例。

客户端类存在于参数 moaction_jsonrpc.client.class

您可以使用客户端类参数添加对任何服务的依赖。不要忘记为服务添加 URL 参数

services.yml

services:
    acme_hello.api.client:
        class: %moaction_jsonrpc.client.class%
        arguments:
            - "http://example.com/api/jsonrpc"