alissonphp / lumen-api-skeleton
Lumen API 框架骨架,使用 JWT 来管理令牌,Socialite 连接 OAuth 提供商,MongoDB 驱动程序和 Predis 连接 Redis 缓存存储。
Requires
- php: >=5.6.4
- illuminate/redis: ^5.4
- jenssegers/mongodb: ^3.2
- laravel/lumen-framework: 5.4.*
- laravel/socialite: ^3.0
- predis/predis: ^1.1
- tymon/jwt-auth: 1.0.0-beta.3
- vlucas/phpdotenv: ~2.2
Requires (Dev)
- appzcoder/lumen-routes-list: *
- fzaninotto/faker: ~1.4
- mockery/mockery: ~0.9
- phpunit/phpunit: ~5.0
This package is not auto-updated.
Last update: 2024-09-24 19:05:20 UTC
README
使用 Lumen 框架和额外包创建 REST API 的基本结构
系统要求
- PHP >= 5.6.4
- OpenSSL PHP 扩展
- PDO PHP 扩展
- Mbstring PHP 扩展
- Mongo DB 驱动程序
- PHPUnit
- Redis 驱动程序
安装
$ git clone https://github.com/alissonphp/lumen-api-skeleton
$ cd lumen-api-skeleton/
重要:在应用程序根目录下配置 .env(复制 .env.example),使用开发变量:MySQL 和 MongoDB 的连接,认证服务的 APP Id(google, facebook)。
$ composer install $ php artisan jwt:secret $ php artisan migrate $ php artisan db:seed $ php -S localhost:8000 -t public
开发服务器运行在:https://:8000
使用的包
- Lumen 微框架 [https://lumen.laravel.com/docs/5.4/]
- Socialite [https://github.com/laravel/socialite]
- JWT Auth [https://github.com/tymondesigns/jwt-auth/]
- Laravel MongoDB [https://github.com/jenssegers/laravel-mongodb]
- Predis [https://github.com/nrk/predis]
模块化
应用程序采用模块化设计。每个模块都定义了职责和 层。模块的标准模型遵循以下结构
app
└───Modules
│ │ Controllers
│ │ Events
│ │ Listeners
│ │ Middlewares
│ │ Models
│ │ Supports
│ │ Tests
│ │ routes.php
要启用/禁用模块的功能,只需在 config / modules.php 文件的数组中指定命名空间即可。在禁用模块之前,重要的事先验证模块之间的互操作性。
路由
路由在各个模块根目录下的 routes.php 文件中定义。RouteServiceProvider 负责加载在 config / modules.php 中定义的每个模块的路由。无需实例化新的调用。
端点组成
- 模型:localhost:8000 + API 版本 + 模块命名空间 + 动作 + 参数,例如:https://:8000/v1/oauth/login/google 或 https://:8000/v1/oauth/login/google/callback
测试
有两种类型的测试:集成和单元。应该将测试用例放在开发中的模块的 /Tests 目录下。对于集成测试,使用 "test + type + Test" 命名标准,例如:LoginIntegrationTest(测试:Login,类型:集成)。
使用命令运行测试,引用测试套件为 'unit' 或 'integration'
$ phpunit --testsuite integration $ phpunit --testsuite unit
贡献
此存储库的目的是创建一个快速模型来使用 Lumen 框架实现 REST API。我们还有很多工作要做,才能接近一个“理想”模型:访问端点的规则、改进标准、编写测试、翻译等。