oldcodefork/laminas-api-tools-rpc

Laminas 模块,用于简化 RPC 服务的创建

1.0.0 2023-02-06 10:12 UTC

This package is auto-updated.

Last update: 2024-09-06 13:20:29 UTC


README

Build Status

🇷🇺 俄罗斯公民

我们,Laminas 的参与者,来自不同的国家。我们中的许多人既有在俄罗斯的朋友、亲戚和同事,也有在乌克兰的。我们中的一些人出生在俄罗斯,一些人现在居住在俄罗斯。我们中的一些人的祖父母在二战中与法西斯主义者作战。这里没有人支持法西斯主义。

我们其中一人有一位乌克兰亲戚,她和儿子一起逃离了家园。火车因前方道路上的轰炸而延误。我们有朋友在防空洞里躲藏。我们在空袭后焦虑地关注他们,空袭不分青红皂白地攻击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知这些消息的。这是我们的亲身经历。

您信任我们足够,使用我们的程序,我们请求您再次信任我们。我们需要帮助。走出家门,抗议这场无意义的战争。停止杀戮。说“停止战争!”

🇺🇸 俄罗斯公民

我们来自世界各地。我们中的许多人既有在俄罗斯的朋友、家人和同事,也有在乌克兰的。我们中的一些人出生在俄罗斯,一些人现在居住在俄罗斯。我们中的一些人的祖父母在二战中与纳粹作战。这里没有人支持法西斯主义。

我们的团队成员之一有一位乌克兰亲戚,她和儿子一起逃离了家园。火车因前方道路上的轰炸而延误。我们有朋友在防空洞里躲藏。我们在空袭后焦虑地关注他们,空袭不分青红皂白地攻击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知这些消息的。这是我们的亲身经历。

您信任我们足够,使用我们的软件。我们请求您信任我们说出真相。我们需要您的帮助。走出家门,抗议这场不必要的战争。停止杀戮。说“停止战争!”

简介

Laminas 中实现 RPC 服务的模块。

功能

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

要求

请参阅composer.json 文件。

安装

运行以下 composer 命令

$ composer require laminas-api-tools/api-tools-rpc

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

"require": {
    "laminas-api-tools/api-tools-rpc": "^1.3"
}

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

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

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

laminas-component-installer

如果您使用 laminas-component-installer,该插件将为您安装 api-tools-rpc 作为模块。

配置

用户配置

此模块使用顶级配置键 api-tools-rpc

键:控制器服务名称

api-tools-rpc模块使用控制器服务名称与其值的映射,这些值是一个信息数组,用于确定RPC风格控制器的行为。键应该是一个控制器服务名称,同时也要与router配置中分配给路由的控制器服务名称相匹配。

在此键内部,需要以下子键

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

示例

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

系统配置

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

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

Laminas事件

监听器

Laminas\ApiTools\Rpc\OptionsListener

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

Laminas服务

模型

Laminas\ApiTools\Rpc\ParameterMatcher

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

控制器

Laminas\ApiTools\Rpc\RpcController

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