zfcampus/zf-rpc

此包已被废弃,不再维护。作者建议使用 laminas-api-tools/api-tools-rpc 包。

ZF2模块,简化RPC服务的创建

1.4.2 2019-01-22 20:36 UTC

README

仓库废弃于 2019-12-31

此仓库已迁移至 laminas-api-tools/api-tools-rpc

Build Status Coverage Status

简介

实现RPC网络服务的Zend Framework模块。

启用

  • 将控制器定义为PHP可调用函数。
  • 创建HTTP请求方法的白名单;白名单外的请求将返回一个带有Allow响应头,指示允许的方法的405 Method Not Allowed响应。

要求

请参阅 composer.json 文件。

安装

运行以下composer命令

$ composer require zfcampus/zf-rpc

或者,手动将以下内容添加到您的composer.json文件中,在require部分

"require": {
    "zfcampus/zf-rpc": "^1.3"
}

然后运行composer update以确保模块已安装。

最后,将模块名称添加到项目配置的config/application.config.php中的modules键下

return [
    /* ... */
    'modules' => [
        /* ... */
        'ZF\Rpc',
    ],
    /* ... */
];

zf-component-installer

如果您使用zf-component-installer,该插件会帮您将zf-rpc作为模块安装。

配置

用户配置

此模块使用zf-rpc顶级配置键。

键:控制器服务名称

zf-rpc模块使用控制器服务名称与值的映射,这些值确定RPC样式控制器将如何行为。键应是一个控制器服务名称,同时也匹配路由配置中分配给路由的控制器服务名称。

在此键内部,以下子键是必需的

  • http_methods:用于配置此RPC服务控制器可以响应的方法。这也用于填充此服务的Allow响应头。
  • route_name:用于链接回特定路由。这对于RPC路由需要在其响应中构建链接时特别有用。
  • callable(可选):用于指定在调度时将被调用的可调用函数。在调度时,这些可调用函数通常被包装在一个ZF\Rpc\RpcController实例中,这是一个可调用的动作控制器。

示例

'zf-rpc' => [
    'Application\Controller\LoginController' => [
        'http_methods' => ['POST'],
        'route_name'   => 'api-login',
        'callable'     => 'Application\Controller\LoginController::process',
    ],
],

系统配置

以下配置确保此模块在ZF2应用程序的上下文中正常运行

'controllers' => [
    'abstract_factories' => [
        'ZF\Rpc\Factory\RpcControllerFactory',
    ],
],

ZF2事件

监听器

ZF\Rpc\OptionsListener

此监听器注册到MvcEvent::EVENT_ROUTE事件,优先级为-100。它负责确保对于给定RPC服务的OPTIONS请求的HTTP响应包含正确配置和允许的HTTP方法在Allow头中。这使用了匹配服务的zf-rpc服务配置中http_methods键的配置。此外,它验证传入的请求方法是否在配置的http_methods中,如果不是,则返回一个包含填充的Allow头的405 Method Not Allowed响应。

ZF2 服务

模型

ZF\Rpc\ParameterMatcher

此特定模型用于并有用,用于接受一个可调用对象和一组命名参数,并确定哪些可以用于可调用对象的参数。

控制器

ZF\Rpc\RpcController

此控制器用于将注册为RPC服务的可调用对象包装起来,以便使其成为ZF2可分发的。