codivores/laravel-modular-api

一个用于创建符合JSON:API规范的RESTful API的Laravel包,支持版本管理和多个子API,组织为独立模块化服务。

v0.1.1 2024-08-29 12:54 UTC

This package is auto-updated.

Last update: 2024-09-12 09:27:16 UTC


README

Latest Version on Packagist Total Downloads

简化符合JSON:API规范的Laravel RESTful API的创建。该包将代码组织成独立的服务,促进模块化、可维护性和易于测试的架构。

主要功能

  • JSON:API兼容性:生成完全符合JSON:API规范的API响应,确保数据一致性和互操作性(基于timacdonald/json-api包)
  • 独立服务:将业务逻辑结构化为独立的服务,便于代码重用和明确关注点的分离。
  • API版本管理:轻松管理API版本,确保向后兼容性。
  • 子API:创建多个子API(例如,publicprotectedprivate等),以处理不同的访问级别和用例。
  • 本地化:通过处理请求头自动设置整个请求的区域设置来提供多语言内容。

版本支持

  • PHP: 8.28.3
  • Laravel: 11.0

安装

您可以通过composer安装此包

composer require codivores/laravel-modular-api

如果您想为资源使用Hashids(从数字生成的短唯一字符串标识符)进行安装,您可以通过composer安装所需的包

composer require hashids/hashids

如果您想自定义配置,可以发布配置文件

php artisan vendor:publish --tag="modular-api-config"

这是发布配置文件的内容

return [

    /*
    |--------------------------------------------------------------------------
    | API configuration
    |--------------------------------------------------------------------------
    */

    'api' => [

        'routing' => [
            'url' => env('MODULAR_API_ROUTING_URL', env('APP_URL', 'https://')),
            'url_prefix' => env('MODULAR_API_ROUTING_URL_PREFIX', '/'),
            'route_prefix' => env('MODULAR_API_ROUTING_ROUTE_PREFIX', 'api'),
            'enable_version_prefix' => env('MODULAR_API_ROUTING_ENABLE_VERSION_PREFIX', true),
            'enable_type_prefix' => env('MODULAR_API_ROUTING_ENABLE_TYPE_PREFIX', true),
        ],

        'resource' => [
            'custom_type_resolver' => env('MODULAR_API_RESOURCE_CUSTOM_TYPE_RESOLVER', false),
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Modular code configuration
    |--------------------------------------------------------------------------
    */

    'services' => [

        'root_path' => env('MODULAR_API_SERVICES_ROOT_PATH', 'Services'),

    ],

    /*
    |--------------------------------------------------------------------------
    | Features configuration
    |--------------------------------------------------------------------------
    */

    'features' => [

        'rate_limiting' => [
            'enabled' => env('MODULAR_API_FEATURE_RATE_LIMITING_ENABLED', false),
            'attempts' => env('MODULAR_API_FEATURE_RATE_LIMITING_ATTEMPTS_PER_MIN', 30),
            'expires' => env('MODULAR_API_FEATURE_RATE_LIMITING_EXPIRES_IN_MIN', 1),
        ],

        'localization' => [
            'enabled' => env('MODULAR_API_FEATURE_LOCALIZATION_ENABLED', false),
            'request_header' => env('MODULAR_API_FEATURE_LOCALIZATION_REQUEST_HEADER', 'Accept-Language'),
            'locales' => env('MODULAR_API_FEATURE_LOCALIZATION_LOCALES', env('APP_LOCALE', 'en')),
        ],

        'hash_ids' => [
            'enabled' => env('MODULAR_API_FEATURE_HASH_IDS_ENABLED', false),
            'salt' => env('MODULAR_API_FEATURE_HASH_IDS_KEY', env('APP_KEY')),
            'length' => env('MODULAR_API_FEATURE_HASH_IDS_LENGTH', 20),
            'alphabet' => env('MODULAR_API_FEATURE_HASH_IDS_ALPHABET',
                'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'),
        ],

    ],

];

入门

服务目录结构

App/
    Services/
        DomainA/
            Service1/
                Data/
                    Migrations/
                Http/
                    Controllers/
                    Endpoints/
                    Requests/
                Mails/
                    Templates/
                Resources/
                Views/
            Service2/
                ...
        DomainB/
            Service1/
                ...
            Service2/
                ...

许可证

DBAD许可证(DBAD)。请参阅许可证文件获取更多信息。