microshard / jsonrpcserver
适用于PHP的轻量级JsonRpc服务器包
Requires
- php: ^7.0
- psr/http-message: ~1.0
Requires (Dev)
- php-mock/php-mock: ^2.0
- phpunit/phpunit: ^6.5 || ^7.0
Suggests
- guzzlehttp/guzzle: As a possible implementation of the Psr ServerRequestInterface
- microshard/jsonrpcclient: A client bundle for communication with the JsonRpcServer
This package is not auto-updated.
Last update: 2024-09-29 05:48:34 UTC
README
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