oldcodefork / laminas-api-tools-admin
Laminas API Tools 管理模块
Requires
- php: ^7.3 || ~8.0.0 || ~8.1.0 || ~8.2.0
- laminas-api-tools/api-tools-admin-ui: ^2.0
- laminas-api-tools/api-tools-api-problem: ^1.3
- laminas-api-tools/api-tools-configuration: ^1.3.3
- laminas/laminas-code: ^3.5 || ^4.0
- laminas/laminas-eventmanager: ^3.2
- laminas/laminas-filter: ^2.8
- laminas/laminas-http: ^2.8
- laminas/laminas-hydrator: ^3.0 || ^4.0
- laminas/laminas-inputfilter: ^2.8.1
- laminas/laminas-modulemanager: ^2.8.2
- laminas/laminas-mvc: ^2.7.15 || ^3.1.1
- laminas/laminas-servicemanager: ^2.7.10 || ^3.3.2
- laminas/laminas-stdlib: ^2.7.8 || ^3.2.1
- laminas/laminas-validator: ^2.10.2
- laminas/laminas-view: ^2.10
- laminas/laminas-zendframework-bridge: ^1.1
- oldcodefork/laminas-api-tools: ^1.0
- oldcodefork/laminas-api-tools-content-negotiation: ^1.0
- oldcodefork/laminas-api-tools-content-validation: ^1.0
- oldcodefork/laminas-api-tools-hal: ^1.0
- oldcodefork/laminas-api-tools-mvc-auth: ^1.0
- oldcodefork/laminas-api-tools-oauth2: ^1.0
- oldcodefork/laminas-api-tools-provider: ^1.0
- oldcodefork/laminas-api-tools-rest: ^1.0
- oldcodefork/laminas-api-tools-rpc: ^1.0
- oldcodefork/laminas-api-tools-versioning: ^1.0
- webmozart/assert: ^1.10
Requires (Dev)
- ext-sqlite3: *
- alcaeus/mongo-php-adapter: ^1.2.2
- laminas/laminas-coding-standard: ~2.3.0
- laminas/laminas-config: ^2.6 || ^3.2
- laminas/laminas-loader: ^2.6
- phpspec/prophecy-phpunit: ^2.0.1
- phpunit/phpunit: ^9.5.5
- psalm/plugin-phpunit: ^0.15.0
- vimeo/psalm: ^4.3
Replaces
- zfcampus/zf-apigility-admin: ^1.8.0
README
🇷🇺 俄罗斯公民
我们,Laminas的参与者,来自不同的国家。我们中许多人都有俄罗斯和乌克兰的朋友、亲属和同事。我们中的一些人出生在俄罗斯。我们中的一些人现在住在俄罗斯。我们中的一些人的祖父母在二战中与法西斯作战。这里没有人支持法西斯主义。
我们中的一位成员有一位乌克兰亲属,她带着儿子逃离了家园。火车因为前方路上的轰炸而延误。我们有朋友躲在防空洞里。我们在空袭后焦急地等待他们的消息,空袭无差别地攻击医院、学校、幼儿园和房屋。我们不是从任何媒体上得知这些消息的。这是我们亲眼所见。
你们足够信任我们,使用我们的程序,我们请求你们再次信任我们。我们需要帮助。走出家门,抗议这场毫无意义的战争。停止血腥。说“不,战争!”
🇺🇸 致俄罗斯公民
Laminas的我们来自世界各地。我们中许多人都有俄罗斯和乌克兰的朋友、家人和同事。我们中的一些人出生在俄罗斯。我们中的一些人现在住在俄罗斯。我们中的一些人的祖父母在二战中与纳粹作战。这里没有人支持法西斯主义。
我们的一位团队成员有一位乌克兰亲属,她带着儿子逃离了家园。火车因为前方路上的轰炸而延误。我们有朋友躲在防空洞里。我们在空袭后焦急地等待他们的消息,空袭无差别地攻击医院、学校、幼儿园和房屋。我们不是从任何媒体上得知这些消息的。这是我们亲眼所见。
你们足够信任我们,使用我们的软件。我们请求你们信任我们说出真相。我们需要帮助。走出家门,抗议这场毫无意义的战争。停止杀戮。说“停止战争!”
简介
api-tools-admin
模块提供了用于管理Laminas API Tools中API的后端管理API和前端Admin UI。
注意
不要在生产系统中启用此模块。
要求
请参阅composer.json文件。
安装
运行以下composer
命令
$ composer require --dev "laminas-api-tools/api-tools-admin"
然后运行composer install
以确保模块已安装。
最后,将模块名称添加到项目config/application.config.php
文件下的modules
键下
return [ /* ... */ 'modules' => [ /* ... */ 'Laminas\ApiTools\Admin', ], /* ... */ ];
通常,此模块应与laminas-development-mode一起使用,以便在您的应用程序中条件性地启用模块。这样做时,您将添加模块到项目的config/development.config.php.dist
文件而不是config/application.config.php
文件,并通过php public/index.php development enable
启用它。
升级
我们努力使升级过程尽可能简单,就像一个composer update
;然而,有时可能需要其他步骤。本节记录了这些步骤。
初始升级到1.5
如果您是从低于1.5的版本升级到1.5或更高版本,有一些变化需要注意。
首先,版本1.5取消了对rwoverdijk/assetmanager的要求。然而,为了使用管理UI,您需要一种方式来访问UI和api-tools模块提供的公共资产。您有三个选择
-
安装 rwoverdijk/assetmanager:
composer require rwoverdijk/assetmanager
。但是请注意,截至 1.5.0 版本发布时,此模块与 laminas-mvc v3 版本不兼容。如果您希望快速升级,并且不关心安装的 Laminas 组件版本,这是最简单的方法。 -
安装 api-tools-asset-manager。这是一个 Composer 插件,在安装或卸载包时运行。如果您添加此插件,需要遵循以下步骤
composer require --dev laminas-api-tools/api-tools-asset-manager
rm -Rf ./vendor
composer install
这些额外步骤是为了让插件能够识别其他组件中的资源。
-
手动复制或创建符号链接,将所需的资源复制到您的公共目录中。例如
ln -s vendor/laminas-api-tools/api-tools/asset/api-tools public/api-tools
ln -s vendor/laminas-api-tools/api-tools-admin-ui/dist/api-tools-ui public/api-tools-ui
这三个步骤都可以通过您的应用程序的 web 服务器使资源公开可用。
从 1.5 升级到 v3 Laminas 组件
升级到此模块的 1.5 版本后,您可以升级您的应用程序以利用 Laminas v3 组件。最简单的方法是使用提供的脚本
$ ./vendor/bin/api-tools-upgrade-to-1.5
此脚本将更新您的 Composer 需求和约束,更新模块列表以列出 Laminas 组件,并删除不需要/过时的组件,然后重新安装所有依赖项。
如果您不想使用脚本,或者脚本失败,您可以使用以下步骤手动更新您的应用程序
- 更新您的
composer.json
- 删除
require.zendframework/zendframework
require.rwoverdijk/assetmanager
require-dev.zendframework/zftool
- 更新
require.laminas/laminas-development-mode
约束变为^3.0
require-dev.laminas/laminas-developer-tools
变为^1.0
- 添加
require.laminas/laminas-cache
,约束为2.7.1
require.laminas/laminas-log
,约束为2.9
require.laminas/laminas-mvc-i18n
,约束为1.0
require-dev.laminas-api-tools/api-tools-asset-manager
,约束为^1.0
- 删除
- 更新您的
config/modules.config.php
- 删除
AssetManager
Laminas\DevelopmentMode
- 在列表顶部添加
Laminas\Cache
Laminas\Db
Laminas\Filter
Laminas\Hydrator
Laminas\InputFilter
Laminas\I18n
Laminas\Log
Laminas\Mvc\I18n
Laminas\Paginator
Laminas\Router
Laminas\Validator
- 删除
- 更新您的
config/development.config.php
和config/development.config.php.dist
文件- 从模块列表中删除
ZFTool
- 从模块列表中删除
- 删除
composer.lock
- 递归地删除
vendor/
子目录 - 执行
composer install
开发模式
在 1.5 之前以及运行升级脚本或遵循上面的升级说明之前,Laminas API Tools 使用的是 laminas-development-mode v2 版本,它依赖于 laminas-mvc v2 版本中默认提供的 Console <-> MVC 集成。
laminas-development-mode v3 运作方式不同,它作为 Composer 供应商的二进制文件提供,没有其他要求。现在调用方式为
$ ./vendor/bin/laminas-development-mode enable
和
$ ./vendor/bin/laminas-development-mode disable您还可以查询状态
$ ./vendor/bin/laminas-development-mode status
配置
由于此特定模块负责提供 API 和 Laminas API Tools Admin UI,因此它需要大量的配置才能在开发环境中运行。由于开发人员修改系统级配置的可能性非常低,因此在此 README 中省略了它,但可以在存储库中找到。
此外,该模块在顶级键api-tools-admin
下定义了以下特定于模块的配置。
键:path_spec
默认情况下,api-tools-admin将使用PSR-0目录结构创建新的Laminas API Tools模块。您可以通过api-tools-admin.path_spec
配置切换到PSR-4,该配置接受以下值之一
Laminas\ApiTools\Admin\Model\ModulePathSpec::PSR_0
('psr-0')Laminas\ApiTools\Admin\Model\ModulePathSpec::PSR_4
('psr-4')
路由
此模块公开可访问的HTTP API端点和静态资源。
API端点
默认情况下,所有路由都以前缀/api-tools
开头。
api/api-tools-version
- 从1.5.1版本开始
如果可以找到,返回当前Laminas API Tools版本,否则返回字符串@dev
。有效载荷位于version
键中
{ "version": "1.4.0" }
-
Accept
:application/json
-
Content-Type
:application/json
-
方法:
GET
-
错误:无
api/config
此端点用于检查应用程序配置,并提供对其单个值的覆盖。所有覆盖都写入单个文件config/autoload/development.php
;您可以通过api-tools-configuration.config-file
键在配置中覆盖该位置。
-
Accept
:application/json
,application/vnd.laminas-api-tools.v1.config+json
application/json
将以键/值对的形式提供表示,键是点分隔的值,就像在INI中找到的那样。application/vnd.laminas-api-tools.v1.config+json
将以树的形式提供配置。 -
Content-Type
:application/json
,application/vnd.laminas-api-tools.v1.config+json
application/json
表示您正在发送键/值对,键是点分隔的值,就像在INI文件中找到的那样。application/vnd.laminas-api-tools.v1.config+json
表示您正在发送嵌套的数组/对象配置。 -
方法:
GET
,PATCH
-
错误:
application/problem+json
api/config/module?module={module name}
此操作与api/config
端点完全相同,但期望一个已知的模块名称。当提供时,它允许您检查并操作该模块的配置文件。
api/authentication
此REST端点用于创建、更新和删除应用程序的认证配置。它使用认证资源。
-
Accept
:application/json
成功时返回一个认证资源。
-
Content-Type
:application/json
期望一个认证资源,其中包含创建新HTTP认证或更新现有HTTP认证所需的所有详细信息。
-
HTTP方法:
GET
,POST
,PATCH
,DELETE
GET
在没有先前设置认证的情况下返回404
响应。POST
在成功时返回201
响应。PATCH
在成功时返回200
响应。DELETE
在成功时返回204
响应。 -
错误:
application/problem+json
api/authentication[/:authentication_adapter] (API V2)
此REST端点用于检索和更新在Laminas API Tools中使用的认证适配器。它使用认证资源版本2。
此端点仅适用于API 版本2。您需要在Appect头中传递以下mediatype
Accept: application/vnd.api-tools.v2+json
-
Accept
:application/json
成功时返回一个认证资源版本2。
-
Content-Type:
application/json
期望一个用于创建或更新现有HTTP认证的详细信息齐全的认证资源版本 2。
-
HTTP方法:
GET
、POST
、PUT
、DELETE
GET
如果之前没有设置认证适配器,将返回404
响应。POST
在成功时将返回201
响应。PUT
在成功时将返回200
响应。DELETE
在成功时将返回204
响应。
api/module/:name/authentication?version=:version (API V2)
此REST端点是用于获取和更新特定API(模块)及其版本(如果指定)的认证映射。
此端点仅适用于API 版本2。您需要在Appect头中传递以下mediatype
Accept: application/vnd.api-tools.v2+json
-
Accept
:application/json
在成功时返回一个 { "authentication" : value }。
-
Content-Type:
application/json
期望一个包含认证适配器名称的 认证 值的JSON。
-
HTTP方法:
GET
、PUT
、DELETE
GET
将返回一个 { "authentication" : value } 响应。如果不存在认证适配器,值将为false。PATCH
在成功时将返回200
响应,并带有更新后的认证值。DELETE
在成功时将返回204
响应。
api/module/:name/authorization?version=:version
此REST端点是用于获取和更新应用程序的授权配置。它使用授权资源。
-
Accept
:application/json
在成功时返回授权资源。
-
Content-Type:
application/json
期望一个包含指定授权规则的必要详细信息的授权资源。
-
HTTP方法:
GET
、PATCH
GET
将始终返回一个实体;如果模块之前没有配置,或者如果给定版本的服务未在配置中列出,它将提供默认值。PATCH
在成功时将返回200
响应,并带有更新后的实体。 -
错误:
application/problem+json
api/db-adapter[/:adapter_name]
此REST端点是用于创建、更新和删除命名 Laminas\Db
适配器;它使用db-adapter资源。
-
Accept
:application/json
在成功时返回db-adapter资源。
-
Content-Type
:application/json
期望包含创建或更新DB连接所需所有详细信息的db-adapter资源。
-
集合方法:
GET
、POST
-
资源方法:
GET
、PATCH
、DELETE
-
错误:
application/problem+json
api/module.enable
此端点将使现有模块启用Laminas API Tools(Apigilify?)。
-
Accept
:application/json
在成功时返回一个模块资源。
-
Content-Type
:application/json
期望一个包含描述现有Laminas模块的“module”属性的对象的
PUT
请求。 -
方法:
PUT
-
错误:
application/problem+json
请求负载应具有以下结构
{ "module": "Status" }
api/validators
此端点提供所有注册验证器插件的排序列表;用例是当为服务创建输入过滤器时构建可用插件的下拉列表。Laminas ValidatorPluginManager
服务中的任何验证器都将被表示。
-
Accept
:application/json
在成功时返回一个
application/json
响应。 -
方法:
GET
-
错误:
application/problem+json
对于成功的请求,响应负载具有以下格式
{ "validators": [ "list", "of", "validators" ] }
api/versioning
此端点是向现有API添加新版本。如果负载中没有传递版本号,则版本号将简单地递增。
-
Accept
:application/json
在成功时返回一个JSON结构,在错误时返回API-Problem负载。
-
Content-Type
:application/json
期望一个包含“module”属性的对象,提供启用Laminas、Laminas API Tools的模块名称;可选地,还可以提供“version”属性来指定要使用的特定版本字符串。
-
方法:
PATCH
-
错误:
application/problem+json
请求负载应具有以下结构
{ "module": "Status", "version": 10 }
成功时,服务返回以下结构
{ "success": true, "version": "version string or integer" }
api/module[/:name]
这是模块资源的规范端点。
-
Accept
:application/json
成功时返回单个模块资源(当提供了
name
时)或一组模块资源(当未提供name
时)。 -
Content-Type
:application/json
期望一个对象,其中包含描述要创建的模块的“name”属性。
-
集合方法:
GET
、POST
-
资源方法:
GET
-
错误:
application/problem+json
创建新的API模块时,使用以下请求负载
{ "name": "Status" }
api/module/:name/rpc[/:controller_service_name]
这是RPC资源的规范端点。
-
Accept
:application/json
成功时返回单个RPC资源(当提供了
controller_service_name
时)或一组RPC资源(当未提供controller_service_name
时)。 -
Content-Type
:application/json
期望一个对象,其中包含描述要创建的端点的“service_name”属性。
您还可以提供RPC资源中列出的任何其他选项。
-
集合方法:
GET
、POST
-
资源方法:
GET
,PATCH
-
可以将查询字符串变量
version
传递到集合中,以按版本过滤结果:例如,/admin/api/module/:name/rpc?version=2
。 -
错误:
application/problem+json
必需的最小请求负载结构如下
{ "service_name": "Status" }
api/module/:name/rpc/:controller_service_name/inputfilter[/:input_filter_name]
此服务用于创建、更新和删除与指定RPC服务关联的命名输入过滤器。
-
Accept
:application/json
成功时返回单个输入过滤器(当提供了
input_filter_name
时)或一组输入过滤器(当未提供input_filter_name
时)。通常,只有一个输入过滤器将与特定的RPC服务相关联。返回的输入过滤器还将组成一个属性
input_filter_name
,它是给定输入过滤器的标识符。 -
Content-Type
:application/json
期望一个输入过滤器。
-
集合方法:
GET
、POST
-
资源方法:
GET
,PUT
,DELETE
-
错误:
application/problem+json
api/module/:name/rest[/:controller_service_name]
这是REST资源的规范端点。
可用于任何类型的REST资源,包括数据库连接。
数据库连接资源期望以下附加属性(并将返回它们)
-
adapter_name
:一个命名的数据库适配器服务。 -
table_name
:与此服务关联的数据库表。 -
hydrator_name
:可选;用于填充数据库返回的行的hydrator服务的名称;默认为ArraySerializable
。 -
table_service
:可选;默认情况下自动生成,但可以提供替代的TableGateway服务。 -
Accept
:application/json
成功时返回单个REST资源(当提供了
controller_service_name
时)或一组REST资源(当未提供controller_service_name
时)。 -
Content-Type
:application/json
期望一个对象,其中包含描述要创建的REST服务的
resource_name
属性。您还可以提供REST资源中列出的任何其他选项。
-
集合方法:
GET
,POST
,DELETE
-
资源方法:
GET
,PATCH
-
可以将查询字符串变量
version
传递到集合中,以按版本过滤结果:例如,/admin/api/module/:name/rest?version=2
。 -
错误:
application/problem+json
创建新的REST服务所需的最小结构如下
{ "resource_name": "Status" }
API模型
以下是一份各种模型的列表,这些模型可以通过上述API端点返回,或者预期用于请求体。
身份验证
HTTP基本身份验证
{ "accept_schemes": [ "basic" ], "realm": "The HTTP authentication realm to use", "htpasswd": "path on filesystem to htpasswd file" }
HTTP摘要身份验证
{ "accept_schemes": [ "digest" ], "realm": "The HTTP authentication realm to use", "htdigest": "path on filesystem to htdigest file", "nonce_timeout": "integer; seconds", "digest_domains": "Space-separated list of URIs under authentication" }
OAuth2身份验证
{ "dsn": "PDO DSN of database containing OAuth2 schema", "username": "Username associated with DSN", "password": "Password associated with DSN", "route_match": "Literal route to match indicating where OAuth2 login/authorization exists" }
身份验证2
HTTP基本身份验证
{ "name" : "Name of the authentication adapter", "type": "basic", "realm": "The HTTP authentication realm to use", "htpasswd": "Path on filesystem to htpasswd file" }
HTTP摘要身份验证
{ "name" : "Name of the authentication adapter", "type": "digest", "realm": "The HTTP authentication realm to use", "digest_domains": "Space-separated list of URIs under authentication", "nonce_timeout": "integer; seconds", "htdigest": "Path on filesystem to htdigest file" }
OAuth2身份验证(使用PDO)
{ "name" : "Name of the authentication adapter", "type": "oauth2", "oauth2_type" : "pdo", "oauth2_route" : "Literal route to match indicating where OAuth2 login/authorization exists", "oauth2_dsn": "PDO DSN of database containing OAuth2 schema", "oauth2_username": "Username associated with DSN (optional)", "oauth2_password": "Password associated with DSN (optional)", "oauth2_options": "(optional)" }
OAuth2身份验证(使用MongoDB)
{ "name" : "Name of the authentication adapter", "type": "oauth2", "oauth2_type" : "mongo", "oauth2_route" : "Literal route to match indicating where OAuth2 login/authorization exists", "oauth2_dsn": "MongoDB DSN of database containing OAuth2 documents", "oauth2_database": "Database name", "oauth2_locator_name": "SomeServiceName class (optional)", "oauth2_options": "(optional)" }
授权
{ "Rest\Controller\Service\Name::__resource__": { "GET": bool, "POST": bool, "PUT": bool, "PATCH": bool, "DELETE": bool }, "Rest\Controller\Service\Name::__collection__": { "GET": bool, "POST": bool, "PUT": bool, "PATCH": bool, "DELETE": bool }, "Rpc\Controller\Service\Name::actionName": { "GET": bool, "POST": bool, "PUT": bool, "PATCH": bool, "DELETE": bool } }
REST服务为其实体和集合实例中的每个实例都有一个条目。RPC服务为每个公开的操作名称有一个条目(这通常只有一个)。每个服务都有一个HTTP方法列表,以及一个标志。值为false
表示不需要授权;值为true
表示需要授权。
注意:如果应用程序中设置了
deny_by_default
标志,则标志的含义相反;true
表示方法是公开的,false
表示需要身份验证。
数据库适配器
{ "adapter_name": "Service name for the DB adapter", "database": "Name of the database", "driver": "Driver used to make the connection" }
此外,还可以组合用于创建Laminas\Db\Adapter\Adapter
实例的其他任何属性:例如,“用户名”、“密码”等。
输入过滤器
{ "input_name": { "name": "name of the input; should match key of object", "validators": [ { "name": "Name of validator service", "options": { "key": "value pairs to specify behavior of validator" } } ] } }
输入过滤器可以包含任意数量的输入,其格式遵循[Laminas输入过滤器文档](https://getlaminas.org/manual/2.3/en/modules/laminas.input-filter.intro.html)中描述的Laminas\InputFilter\Factory
使用的格式。
目前,我们不允许嵌套输入过滤器。
模块
{ "name": "normalized module name", "namespace": "PHP namespace of the module", "is_vendor": "boolean value indicating whether or not this is a vendor (3rd party) module", "versions": [ "Array", "of", "available versions" ] }
此外,module
资源还组合了RPC和REST资源的关联关系;这些分别使用“rpc”和“rest”关系。
rpc
{ "controller_service_name": "name of the controller service; this is the identifier, and required", "accept_whitelist": [ "(Optional)", "List", "of", "whitelisted", "Accept", "mediatypes" ], "content_type_whitelist": [ "(Optional)", "List", "of", "whitelisted", "Content-Type", "mediatypes" ], "http_options": [ "(Required)", "List", "of", "allowed", "Request methods" ], "input_filter": "(Optional) Present in returned RPC services, when one or more input filters are present; see the inputfilter resource for details", "route_match": "(Required) String indicating Segment route to match", "route_name": "(Only in representation) Name of route associated with endpoint", "selector": "(Optional) Content-Negotiation selector to use; Json by default" }
rest
{ "controller_service_name": "name of the controller service; this is the identifier, and required", "accept_whitelist": [ "(Optional)", "List", "of", "whitelisted", "Accept", "mediatypes" ], "adapter_name": "(Only in DB-Connected resources) Name of Laminas\\DB adapter service used for this resource", "collection_class": "(Only in representation) Name of class representing collection", "collection_http_options": [ "(Required)", "List", "of", "allowed", "Request methods", "on collections" ], "collection_query_whitelist": [ "(Optional)", "List", "of", "whitelisted", "query string parameters", "to pass to resource for collections" ], "content_type_whitelist": [ "(Optional)", "List", "of", "whitelisted", "Content-Type", "mediatypes" ], "entity_class": "(Only in representation) Name of class representing resource entity", "entity_identifier_name": "(Optional) Name of entity field representing the identifier; defaults to 'id'", "hydrator_name": "(Only in DB-Connected resources) Name of Laminas\\Stdlib\\Hydrator service used for this resource", "route_identifier_name": "(Optional) Name of route parameter representing the resource identifier; defaults to resource_name + _id", "input_filter": "(Optional) Present in returned REST services, when one or more input filters are present; see the inputfilter resource for details", "module": "(Only in representation) Name of module in which resource resides", "page_size": "(Optional) Integer representing number of entities to return in a given page in a collection; defaults to 25", "page_size_param": "(Optional) Name of query string parameter used for pagination; defaults to 'page'", "resource_class": "(Only in representation) Name of class representing resource handling operations", "resource_http_options": [ "(Required)", "List", "of", "allowed", "Request methods", "on individual resources" ], "route_match": "(Optional) String indicating Segment route to match; defaults to /resource_name[/:route_identifier_name]", "route_name": "(Only in representation) Name of route associated with api service", "selector": "(Optional) Content-Negotiation selector to use; HalJson by default", "table_name": "(Only in DB-Connected resources) Name of database table used for this resource", "table_service": "(Only in DB-Connected resources) Name of TableGateway service used for this resource" }
Laminas事件
监听器
Laminas\ApiTools\Admin\Module
此监听器连接到MvcEvent::EVENT_RENDER
,优先级为100
。它负责根据控制器服务结果是否为实体或集合来条件性地附加监听器。如果检测到任何一个,则监听器将附加到Laminas\ApiTools\Hal\Plugin\Hal
事件renderEntity
和renderCollection.entity
,这确保它们将在HAL插件有机会开始渲染时分发。
Laminas服务
模型
由api-tools-admin
提供的许多模型服务要么处理PHP代码的生成和修改,要么处理基于PHP的配置文件的生成和修改。
Laminas\ApiTools\Admin\Model\AuthenticationModel
- 负责创建和修改HTTP基本、HTTP摘要和OAuth2策略的特定配置。敏感信息将写入本地配置文件,而结构信息将写入全局和模块文件。Laminas\ApiTools\Admin\Model\AuthorizationModelFactory
- 负责将授权特定细节(允许/拒绝规则的ACL矩阵)写入模块配置文件。Laminas\ApiTools\Admin\Model\ContentNegotiationModel
- 负责将自定义内容协商选择器写入全局配置文件。Laminas\ApiTools\Admin\Model\ContentNegotiationResource
- 消费ContentNegotiationModel
的REST资源,以便公开内容协商配置管理的API端点。Laminas\ApiTools\Admin\Model\DbAdapterModel
- 负责在应用程序级别的全局和本地配置文件之间写入数据库适配器特定的配置。敏感信息将写入本地配置文件。Laminas\ApiTools\Admin\Model\DbAdapterResource
- 消费DbAdapterModel
的REST资源,以便公开数据库适配器配置管理的API端点。Laminas\ApiTools\Admin\Model\DbConnectedRestServiceModel
- 负责写入将数据库表公开为REST资源所需的配置信息。Laminas\ApiTools\Admin\Model\DocumentationModel
- 负责写入模块配置目录中一个特殊命名的文件,该文件将包含所有自定义API文档,包括请求、响应以及API的所有其他可记录元素。Laminas\ApiTools\Admin\Model\InputFilterModel
- 负责为每个模块编写输入过滤器配置规范。Laminas\ApiTools\Admin\Model\FiltersModel
- 负责通过API提供内置过滤器列表及其元数据。Laminas\ApiTools\Admin\Model\HydratorsModel
- 负责配置和管理全局hydrator服务名称列表。Laminas\ApiTools\Admin\Model\ModuleModel
- 负责聚合模块信息,包括REST和RPC服务,并通过API公开这些信息。此外,在创建新模块时,它将创建启用Laminas API Tools的模块所需的代码工件。Laminas\ApiTools\Admin\Model\ModuleResource
- 负责将ModuleModel
作为REST资源暴露在Laminas API Tools API中。Laminas\ApiTools\Admin\Model\RestServiceModel
- 负责以可用于Admin UI的方式展示REST服务,这些服务定义在api-tools-rest
中,可以创建和修改。Laminas\ApiTools\Admin\Model\RestServiceResource
- 负责消费RestServiceModel
并将该模型作为REST资源在Laminas API Tools API中暴露。Laminas\ApiTools\Admin\Model\RestServiceModelFactory
- 负责创建RestServiceModel
。Laminas\ApiTools\Admin\Model\RpcServiceModel
- 负责以可用于Admin UI的方式展示RPC服务,这些服务定义在api-tools-rpc
中,可以创建和修改。Laminas\ApiTools\Admin\Model\RpcServiceResource
- 负责消费RpcServiceModel
并将该模型作为REST资源在Laminas API Tools API中暴露。Laminas\ApiTools\Admin\Model\RpcServiceModelFactory
- 负责创建RpcServiceModel
。Laminas\ApiTools\Admin\Model\ValidatorsModel
- 负责通过API提供可用验证器列表。Laminas\ApiTools\Admin\Model\ValidatorMetadataModel
- 负责提供通过ValidatorModel
和验证器API提供的验证器的元数据。Laminas\ApiTools\Admin\Model\VersioningModel
- 负责建模工作流程和模块代码创建工件,这些工件是提供基于特定Laminas API Tools的REST或RPC服务的新版本所必需的。Laminas\ApiTools\Admin\Model\ModuleVersioningModelFactory
- 负责创建ModuleVersioningModel
。