codivores / laravel-modular-api
一个用于创建符合JSON:API规范的RESTful API的Laravel包,支持版本管理和多个子API,组织为独立模块化服务。
v0.1.1
2024-08-29 12:54 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^11.0
- timacdonald/json-api: ^1.0
Requires (Dev)
- laravel/pint: ^1.10
README
简化符合JSON:API规范的Laravel RESTful API的创建。该包将代码组织成独立的服务,促进模块化、可维护性和易于测试的架构。
主要功能
- JSON:API兼容性:生成完全符合JSON:API规范的API响应,确保数据一致性和互操作性(基于timacdonald/json-api包)
- 独立服务:将业务逻辑结构化为独立的服务,便于代码重用和明确关注点的分离。
- API版本管理:轻松管理API版本,确保向后兼容性。
- 子API:创建多个子API(例如,
public
、protected
、private
等),以处理不同的访问级别和用例。 - 本地化:通过处理请求头自动设置整个请求的区域设置来提供多语言内容。
版本支持
- PHP:
8.2
,8.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)。请参阅许可证文件获取更多信息。