microshard/jsonrpcserver

适用于PHP的轻量级JsonRpc服务器包

dev-master 2018-08-27 17:43 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:48:34 UTC


README

Build Status codecov

JsonRpcServer

适用于PHP的轻量级JsonRpc服务器包

用法

要设置服务器,您需要创建一个Server实例,它需要两个参数。第一个参数是包含所有请求处理器的Directory对象。第二个参数是实现Security\AuthenticatorInterface接口的验证器对象。

$directory = new Directory();
// add handlers to the directory

$authenticator = new AllowAllAuthenticator();

$server = new Server($directory, $authenticator);

要运行服务器并处理任何传入的请求,您只需传递一个有效的实现了Psr\Http\Message\ServerRequestInterface对象的Psr7 http请求。大多数框架如Symfony、Laravel或Phalcon已经使用兼容的请求实现。否则,您可以使用guzzlehttp/guzzle实现ServerRequestInterface。

$request = \GuzzleHttp\Psr7\ServerRequest::fromGlobals();

$server->run($request);

请求处理器

请求处理器必须实现HandlerInterface接口,它只需要实现一个handle(Request $request)方法。所有处理器都需要在Directory中注册,以便服务器可以使用它。有两种注册处理器的方法。
第一种是注册现有的处理器实例。

$handler = new ExampleHandler();
$directory->addHandler('resource', 'method', 1, $handler);

另一种是注册一个回调,该回调在需要时创建处理器,这是更好的方法,因此您不需要创建很多处理器对象,通常每个请求只使用一个处理器。

$directory->addHandlerDefinition('resource', 'method', 1, function(){
    return new ExampleHandler();
});

在两种情况下,注册处理器时都需要定义3个额外的参数:资源方法版本。resource和方法是简单的标识符,用于请求中识别需要从Directory中选择的哪个处理器来处理传入的请求。version是一个整数,允许您在需要时对处理器进行版本控制。如果不需要它,只需将其设置为默认的1即可。如果您必须更改处理器并且有多个客户端向您的服务器发送请求,这将非常有用。

请求格式

请求格式非常简单,对于大多数请求来说都是通用的。如名称所示,请求预期为json格式,一个包含以下字段的对象

一个例子可能是

{
  "resource": "email",
  "method": "send",
  "auth": {
    "token": "some_auth_token"
  },
  "payload": {
    "recipient": "some@mail.com",
    "subject": "some subject",
    "body": "some message body"
  }
}

响应格式

与请求格式一样,响应也是一个包含以下字段的json对象

客户端

您不需要编写自己的客户端来与服务器通信,您可以使用microshard/jsonrpcclient包。
github