rnd-cosoft/api-tools-admin

Laminas API Tools 管理模块


README

Build Status

🇷🇺 俄罗斯公民

我们,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 模块提供的公共资产。您有三个选择

  1. 安装 rwoverdijk/assetmanager: composer require rwoverdijk/assetmanager。但是请注意,截至 1.5.0 版本发布时,此模块与 laminas-mvc 的 v3 版本不兼容。如果您希望快速升级,并且不关心安装的 Laminas 组件版本,这是最简单的方法。

  2. 安装 api-tools-asset-manager。这是一个 Composer 插件,在安装或卸载包时运行。如果您添加此插件,需要遵循以下步骤

    • composer require --dev laminas-api-tools/api-tools-asset-manager
    • rm -Rf ./vendor
    • composer install

    这些额外步骤是必要的,以便插件能够从其他组件中获取资产。

  3. 手动复制或创建符号链接到您的公共目录中所需的资产。例如

    • 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.phpconfig/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管理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

  • 内容类型: application/json

    期望一个包含创建新HTTP认证或更新现有HTTP认证所需所有详细信息的认证资源版本2

  • HTTP方法: GETPOSTPUTDELETE

    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 }。

  • 内容类型: application/json

    期望一个包含包含认证适配器名称的authentication值的JSON。

  • HTTP方法: GETPUTDELETE

    GET将返回一个{ "authentication" : value }响应。如果不存在任何认证适配器,则该值将为false。

    PATCH在成功时将返回一个200响应,并附带更新的认证值。

    DELETE在成功时将返回一个204响应。

api/module/:name/authorization?version=:version

此REST端点是用于获取和更新应用程序的授权配置。它使用授权资源

  • Accept: application/json

    在成功时返回一个授权资源

  • 内容类型: application/json

    期望一个包含指定授权规则的必要详细信息的授权资源

  • HTTP方法: GETPATCH

    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-adapter资源

  • 集合方法: GETPOST

  • 资源方法: GETPATCHDELETE

  • 错误:application/problem+json

api/module.enable

此端点将为现有的模块启用Laminas API Tools(Apigilify?)。

  • Accept: application/json

    在成功时返回一个模块资源

  • Content-Type: application/json

    期望一个对象,其中包含“module”属性,描述了一个现有的Laminas模块。

  • 方法: 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”属性的Object,提供启用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”属性的Object。

  • 集合方法: GETPOST

  • 资源方法: 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”属性的Object,描述要创建的端点。

    您还可以提供RPC资源中列出的任何其他选项。

  • 集合方法: GETPOST

  • 资源方法: GETPATCH

  • 可以将查询字符串变量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

    期望一个输入过滤器

  • 集合方法: GETPOST

  • 资源方法: GETPUTDELETE

  • 错误:application/problem+json

api/module/:name/rest[/:controller_service_name]

这是REST资源的规范端点。

可用于任何类型的REST资源,包括DB-Connected。

DB-Connected资源期望以下附加属性(并且也会返回它们)

  • adapter_name:一个命名的DB适配器服务。

  • table_name:与此服务关联的数据库表。

  • hydrator_name:可选;这是用于填充数据库返回的行的hydrator服务的名称;默认为ArraySerializable

  • table_service:可选;默认情况下这是自动生成的,但可以提供替代的TableGateway服务。

  • Accept: application/json

    在成功的情况下,根据是否提供 controller_service_name,返回单个 REST 资源 或 REST 资源集合。

  • Content-Type: application/json

    期望传入一个对象,其中包含描述要创建的 REST 服务的 resource_name 属性。

    您还可以提供 REST 资源 中列出的任何其他选项。

  • 集合方法:GETPOSTDELETE

  • 资源方法: GETPATCH

  • 可以传递查询字符串变量 version 到集合中,以按版本过滤结果:例如,/admin/api/module/:name/rest?version=2

  • 错误:application/problem+json

创建新的 REST 服务的最小结构如下

{
    "resource_name": "Status"
}

API 模型

以下是一系列模型的列表,这些模型可以通过上述 API 端点返回,或作为请求体预期。

身份验证

HTTP Basic 身份验证

{
    "accept_schemes": [ "basic" ],
    "realm": "The HTTP authentication realm to use",
    "htpasswd": "path on filesystem to htpasswd file"
}

HTTP Digest 身份验证

{
    "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 Basic 身份验证

{
    "name" : "Name of the authentication adapter",
    "type": "basic",
    "realm": "The HTTP authentication realm to use",
    "htpasswd": "Path on filesystem to htpasswd file"
}

HTTP Digest 身份验证

{
    "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 实例的任何其他属性,例如 "username"、"password" 等。

输入过滤器

{
    "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 资源还组合了 RPCREST 资源的关系链接;这些分别使用 "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 事件的 renderEntityrenderCollection.entity,确保它们将在 HAL 插件有机会开始渲染时被分派。

Laminas 服务

模型

api-tools-admin 提供的许多模型服务要么处理 PHP 代码的生成和修改,要么处理基于 PHP 的配置文件的生成和修改。

  • Laminas\ApiTools\Admin\Model\AuthenticationModel - 负责创建和修改 HTTP Basic、HTTP Digest 和 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 - 负责在 Laminas API Tools API 中将 ModuleModel 公开为 REST 资源。
  • Laminas\ApiTools\Admin\Model\RestServiceModel - 负责以可创建和修改的方式展示 REST 服务,正如在 api-tools-rest 中定义的那样,以便在 Admin UI 中使用。
  • Laminas\ApiTools\Admin\Model\RestServiceResource - 负责消费 RestServiceModel 并将其作为 Laminas API Tools API 中的 REST 资源公开。
  • Laminas\ApiTools\Admin\Model\RestServiceModelFactory - 负责创建 RestServiceModel
  • Laminas\ApiTools\Admin\Model\RpcServiceModel - 负责以可创建和修改的方式展示 RPC 服务,正如在 api-tools-rpc 中定义的那样,以便在 Admin UI 中使用。
  • Laminas\ApiTools\Admin\Model\RpcServiceResource - 负责消费 RpcServiceModel 并将其作为 Laminas API Tools API 中的 REST 资源公开。
  • 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