oldcodefork/laminas-api-tools

Laminas API Tools模块,用于Laminas

1.0.2 2023-02-06 10:19 UTC

This package is auto-updated.

Last update: 2024-09-06 13:45:10 UTC


README

Build Status

🇷🇺 俄罗斯公民

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

我们中的一位成员有一位乌克兰亲属,她和儿子一起逃离了家园。由于前方道路的轰炸,火车延误了。我们有一些朋友躲在防空洞里。在空袭后,我们焦急地等待他们的消息,空袭不分青红皂白地袭击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知此事,我们是直接目击者。

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

🇺🇸 致俄罗斯公民

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

我们团队的一位成员有一位乌克兰亲属,她和儿子一起逃离了家园。由于前方道路的轰炸,火车延误了。我们有一些朋友躲在防空洞里。在空袭后,我们焦急地等待他们的消息,空袭不分青红皂白地袭击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知此事,这是我们亲身体验到的。

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

简介

Laminas元模块,结合了以下功能

  • api-tools-api-problem
  • api-tools-content-negotiation
  • api-tools-content-validation
  • api-tools-hal
  • api-tools-mvc-auth
  • api-tools-rest
  • api-tools-rpc
  • api-tools-versioning

以提供一个连贯的解决方案,用于公开基于Web的API。

还提供了数据库连接的REST资源。

需求

请参阅composer.json文件。

安装

运行以下composer命令

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

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

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

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

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

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

laminas-component-installer

如果您使用laminas-component-installer,该插件将自动将api-tools及其所有依赖项作为模块安装到您的应用程序配置中。

资产

如果您正在使用此模块与admin和/或欢迎界面一起使用,则此模块包含您需要使其网络可访问的资产。为此,您有两种选择

  • rwoverdijk/assetmanager是一个Laminas模块,它提供了关于网络资产管理的高级功能,并且是此模块使用的原始工具。然而,在当前的版本(1.6.0)中,它不支持Laminas的v3组件。即将发布的1.7.0版本可能将支持它们。
  • laminas-api-tools/api-tools-asset-manager是一个Composer插件,在安装和卸载包期间执行操作,根据rwoverdijk/assetmanager中定义的配置复制和删除资产树。但是,要使用此插件,您需要先安装插件,然后才能安装此模块。(如果您已安装此模块,请使用composer remove laminas-api-tools/api-tools将其删除。)

配置

用户配置

此模块用户配置的最高级配置键为api-tools

db-connected

db-connected是一个资源数组,可以在需要满足数据库表驱动的资源用例时通过TableGatewayAbstractFactoryDbConnectedResourceAbstractFactory构建。以下示例列出了启用此功能所需的所有必需和可选配置。

示例

'db-connected' => [
    /**
     * This is sample configuration for a DB-connected service.
     * Each such service requires an adapter, a hydrator, an entity, and a
     * collection.
     *
     * The TableGateway will be called "YourDBConnectedResource\Table" should
     * you wish to retrieve it manually later.
     */
    'YourDBConnectedResource' => [
        'table_service'    => 'Optional; if present, this service will be used as the table gateway',
        'resource_class'   => 'Optional; if present, this class will be used as the db-connected resource',
        'table_name'       => 'Name of DB table to use',
        'identifier_name'  => 'Optional; identifier field in table; defaults to table_name_id or id',
        'adapter_name'     => 'Service Name for DB adapter to use',
        'hydrator_name'    => 'Service Name for Hydrator to use',
        'entity_class'     => 'Name of entity class to which to hydrate',
        'collection_class' => 'Name of collection class which iterates entities; should be a Paginator extension',
    ],
],

系统配置

以下配置是确保此模块在Laminas框架应用程序中正常工作所必需的,并且由模块提供

namespace Laminas\ApiTools;

use Laminas\Db\Adapter\AdapterAbstractServiceFactory as DbAdapterAbstractServiceFactory;
use Laminas\ServiceManager\Factory\InvokableFactory;

return [
    'asset_manager' => [
        'resolver_configs' => [
            'paths' => [
                __DIR__ . '/../asset',
            ],
        ],
    ],
    'router' => [
        'routes' => [
            'api-tools' => [
                'type'  => 'literal',
                'options' => [
                    'route' => '/api-tools',
                ],
                'may_terminate' => false,
            ],
        ],
    ],
    'service_manager' => [
        'factories' => [
            MvcAuth\UnauthenticatedListener::class => InvokableFactory::class,
            MvcAuth\UnauthorizedListener::class => InvokableFactory::class,
        ],
        'abstract_factories' => [
            DbAdapterAbstractServiceFactory::class, // so that db-connected works "out-of-the-box"
            DbConnectedResourceAbstractFactory::class,
            TableGatewayAbstractFactory::class,
        ],
    ],
];

Laminas事件

监听器

Laminas\ApiTools\MvcAuth\UnauthenticatedListener

此监听器连接到MvcAuthEvent::EVENT_AUTHENTICATION_POST,优先级为100。此监听器的主要目的是覆盖api-tools-mvc-auth未认证监听器,以便在认证失败时能够响应API-Problem响应(而不是标准HTTP响应)。

Laminas\ApiTools\MvcAuth\UnauthorizedListener

此监听器连接到MvcAuthEvent::EVENT_AUTHORIZATION_POST,优先级为100。此监听器的主要目的是覆盖api-tools-mvc-auth未授权监听器,以便在授权失败时能够响应API-Problem响应(而不是标准HTTP响应)。

Laminas\ApiTools\Module

此监听器连接到MvcEvent::EVENT_RENDER,优先级为400。其目的是在有MvcEvent的结果为HalJsonModelJsonModel时,有条件地附加Laminas\ApiTools\ApiProblem\RenderErrorListener,确保api-tools-api-problem可以在渲染错误的情况下渲染响应。

Laminas服务

工厂

Laminas\ApiTools\DbConnectedResourceAbstractFactory

此工厂使用请求的名称以及api-tools.db-connected配置,以生成基于Laminas\ApiTools\DbConnectedResource的资源。

Laminas\ApiTools\TableGatewayAbstractFactory

此工厂使用请求的名称以及api-tools.db-connected配置,以生成正确配置的Laminas\Db\TableGateway\TableGateway实例。这些TableGateway实例配置为使用正确的HydratingResultSet,并在迭代时返回配置的实体。

模型

Laminas\ApiTools\DbConnectedResource

此实例作为数据库连接的REST资源类的基础类。此实现是Laminas\ApiTools\Rest\AbstractResourceListener的扩展,可以作为RESTful资源由Laminas API Tools路由。