rnd-cosoft / api-tools-rpc
Laminas 模块,用于简化 RPC 服务创建
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- laminas/laminas-eventmanager: ^3.4
- laminas/laminas-http: ^2.15.1
- laminas/laminas-mvc: ^3.3
- laminas/laminas-servicemanager: ^3.11.1
- laminas/laminas-stdlib: ^3.6.1
- laminas/laminas-view: ^2.14
- rnd-cosoft/api-tools-api-problem: ^1.6
- rnd-cosoft/api-tools-content-negotiation: ^1.8
Requires (Dev)
- laminas/laminas-coding-standard: ~2.3.0
- phpunit/phpunit: ^9.5.10
- psalm/plugin-phpunit: ^0.15.2
- vimeo/psalm: ^4.7
Conflicts
Replaces
README
🇷🇺 俄罗斯公民
我们,Laminas 的参与者,来自不同的国家。我们中的许多人既有在俄罗斯的朋友、亲戚和同事,也有在乌克兰的。我们中的一些人出生在俄罗斯,一些人在俄罗斯生活。我们中的一些人的祖父母在第二次世界大战中与法西斯作战。在这里,没有人支持法西斯主义。
我们中的一员有一个乌克兰亲戚,她和儿子一起逃离了家园。由于前方道路上的轰炸,火车延误了。我们有朋友躲在防空洞里。我们在空袭后焦急地等待他们的消息,空袭不分青红皂白地攻击医院、学校、幼儿园和住宅。我们不从任何媒体上得到这些消息。这是我们的亲身经历。
您足够信任我们使用我们的程序,我们请求您再次信任我们。我们需要帮助。走出来,抗议这场毫无意义的战争。停止流血。说“停止战争!”
🇺🇸 致俄罗斯公民
我们来自世界各地。我们中的许多人既在俄罗斯也有在乌克兰的朋友、家人和同事。我们中的一些人出生在俄罗斯,一些人在俄罗斯生活。我们中的一些人的祖父母在第二次世界大战中与纳粹作战。在这里,没有人支持法西斯主义。
我们的团队成员之一有一个乌克兰亲戚,她和儿子一起逃离了家园。由于前方道路上的轰炸,火车延误了。我们有朋友躲在防空洞里。我们在空袭后焦急地等待他们的消息,空袭不分青红皂白地攻击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知这些消息的。这是我们的亲身经历。
您足够信任我们使用我们的软件。我们请求您信任我们说出真相。我们需要您的帮助。走出来,抗议这场不必要的战争。停止杀戮。说“停止战争!”
简介
Laminas 中实现 RPC 网络服务的模块。
启用
- 定义控制器为 PHP 可调用函数。
- 创建 HTTP 请求方法的白名单;白名单之外的请求将返回一个带有
Allow
标头的405 Method Not Allowed
响应,指示允许的方法。
要求
请参阅 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
模块使用控制器服务名称与其行为信息数组之间的映射。键应是一个控制器服务名称,同时也应与在 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 调度对象。