rygilles / laravel-api-boilerplate
Laravel API Boilerplate 项目。
Requires
- php: >=7.1
- alsofronie/eloquent-uuid: ^1.0
- barryvdh/laravel-debugbar: ^3.1
- bugsnag/bugsnag-laravel: ^2.0
- dingo/api: 2.0.0-alpha2
- doctrine/dbal: ^2.5
- felixkiss/uniquewith-validator: ^3.0
- fideloper/proxy: ~4.0
- filp/whoops: ^2.1
- guzzlehttp/guzzle: ^6.2
- laravel/framework: 5.6.*
- laravel/passport: ^6.0
- laravel/tinker: ~1.0
- predis/predis: ^1.1
- rygilles/laravel-apidoc-generator: 0.1.1
- rygilles/laravel-openapi-schema-generator: v0.3.3
Requires (Dev)
- barryvdh/laravel-ide-helper: ^2.4
- fzaninotto/faker: ~1.4
- mck89/peast: ^1.7
- mockery/mockery: 0.9.*
- nikic/php-parser: ^4.0
- phpunit/phpunit: ~7.0
- symfony/dom-crawler: ^4.0
- twig/twig: ^2.4
README
这是一个基于 Laravel Laravel 5.* 的项目。
先决条件
- PHP 7.*+(适用于 Laravel 5.5+ 框架)
- Node.js 6.*+
- Redis 3+
- Laravel Echo Server 1.3.*+ 全局安装
- PM 2(可选:以“守护进程”运行 Laravel Echo Server)
设置
运行此命令,并确保正确设置 storage 和 cache 文件夹的权限。
composer create-project --prefer-dist rygilles/laravel-api-boilerplate your-project-name
或者通过 git 克隆手动安装此项目。在这种情况下,您必须将 .env.example 文件复制到 .env 并运行此命令
php artisan key:generate
.env 文件
检查 .env 文件并根据您的喜好更改值。
库
此项目使用与 Laravel 公共项目相同的库。
但也(详细信息请查看 composer.json 和 package.json 文件)
生产环境
PHP,使用 composer
- alsofronie/eloquent-uuid 用于 User、UserGroup 和 Notification 模型。
- bugsnag/bugsnag-laravel 用于调试目的(在 .env 文件中设置 BUGSNAG_API_KEY)。
- dingo/api 用于 API 功能。
- felixkiss/uniquewith-validator 用于高级验证规则。
- filp/whoops 用于调试模式中更好的错误显示。
- predis/predis 用于与 Redis 服务器和 laravel-echo-server 的交互。
- rygilles/laravel-apidoc-generator 用于生成 API 文档。
- rygilles/laravel-openapi-schema-generator 用于生成 Open API json 文件。
后台,Node.js 依赖项
- laravel-echo : Laravel Echo是一个JavaScript库,使订阅频道和监听Laravel广播的事件变得轻松。
- socket.io-client : 与Laravel Echo一起使用的实时应用程序框架(客户端)。
开发环境
- nikic/php-parser : PHP解析器(与
php artisan app:makeApiModelResource
命令一起使用)。 - twig/twig : Twig模板渲染(与
php artisan app:makeApiModelResource
命令一起使用)。 - barryvdh/laravel-ide-helper包 : 用于生成Laravel定义(PhpDoc)的php文件的工具。在您的IDE中添加自动完成功能。
后台,Node.js依赖项
Vue.js
- vue : 后台UI的Vue.js JavaScript框架。
- vuex : Vue.js的集中式状态管理。
- vue-router : Vue.js的官方路由。
- vue-i18n : Vue.js中的翻译管理。
- vue-gravatar : Vue.js的简单Gravatar组件。
图形
- admin-lte : 后台仪表板和控制面板。
- bootstrap-less 和 bootstrap-sass : 与AdminLTE一起使用。
- node-sass : 与AdminLTE一起使用。
- font-awesome : 与AdminLTE一起使用。
- ionicons : 与AdminLTE一起使用。
- noty : 实时通知UI。
- datatables.net-select-dt : 用于自定义数据表组件样式。
Laravel
- laravel-mix : 适用于80%用例的Webpack优雅包装器。
- cross-env : 环境脚本的跨平台设置。
杂项
- jquery : 与AdminLTE一起使用。
- axios : 身份验证和API请求。
- pace : 动态加载栏(屏幕顶部)。
- lodash : 与Vue.js一起使用的JavaScript实用库。
- moment : 日期格式化。
数据库
此应用程序使用InnoDB表以支持外键约束,并使用utf8mb4_unicode_ci编码以支持现代字符(包括emoji)。它还使用UUID(128位)。
初始化
运行此命令以创建数据库基本设置,包括默认迁移(请检查database/migrations目录)。
确保Redis已正确安装。
php artisan app:makeFresh
这将安装
Laravel基本表格:用户、密码重置、通知、作业
Passport包表格:oauth_auth_codes、oauth_access_tokens、oauth_refresh_tokens、oauth_clients_table、oauth_personal_access_clients)
模板表格:i18n_lang、user_group
示例数据
Artisan命令(见下文)可以为您的数据库提供用户、项目等示例数据,用于测试和文档生成。
有关更多信息,请检查database/seeds/Samples文件夹。
用户ID | 用户组ID | 姓名 | 电子邮件 | 密码 |
---|---|---|---|---|
41abdec2-1389-11e7-93ae-92361f002671 |
开发者 | John Doe | john.doe@domain.tld | johndoe |
509dd5c0-1389-11e7-93ae-92361f002671 |
支持 | Alan Smithee | alan.smithee@domain.tld | alansmithee |
605c7610-1389-11e7-93ae-92361f002671 |
终端用户 | John Smith | john.smith@domain.tld | johnsmith |
82b5da82-138c-11e7-93ae-92361f002671 |
终端用户 | Mickey Mouse | mickey.mouse@domain.tld | mickeymouse |
Node、Laravel Mix和Laravel Echo Server
NodeJs
安装NodeJs依赖项(有关更多信息,请检查package.json文件)。
npm install
Laravel Mix
资源
通过替换
- resources/assets/img/dashboard-logo.png(50 x 200)
- resources/assets/img/dashboard-mini-logo.png(50 x 50)
- resources/assets/img/favicon.jpg
检查webpack.mix.js以启用favicon.jpg复制和管理您自己的资源。
编译
运行此命令以编译资源
npm run dev
Laravel Echo Server
实时通知和事件通过使用Redis和Socket.io的本地Node.js服务器发送。
整个过程由laravel-echo-server处理。
通过创建此命令初始化Laravel Echo Serverlaravel-echo-server.json配置文件
laravel-echo-server init
启动和自动重启
使用PM2的自动重启功能
确保您已在laravel-echo-server.ecosystem.config.json文件中配置了所有内容。 :
pm2 start laravel-echo-server.ecosystem.config.json
或使用此命令手动启动服务器
laravel-echo-server start
Artisan命令
app:makeFresh
php artisan app:makeFresh
此命令将重置/刷新迁移,重新创建所需的数据库数据,并可选地创建一个新的应用程序并带有示例数据。
app:generateApiDocs
php artisan app:generateApiDocs
使用当前数据库资源生成API文档。
请确保您已配置好config/apidocs.php文件中的所有内容。
app:makeApiModelResource
php artisan app:makeApiModelResource
仅限开发环境使用!
生成并修改源文件,以添加一个新模型和相关文件。
- 模型:创建在app/Models文件夹中。
- 迁移(可选):创建在database/migrations文件夹中。
- 初始化种子(可选):创建在database/seeds文件夹中。这还将修改database/seeds/InitSeeder.php文件!
- 示例种子(可选):创建在database/seeds/Samples文件夹中。这还将修改database/seeds/Samples/SamplesSeeder.php文件!
- 控制器(可选):创建在app/Http/Controllers/Api文件夹中。这还将修改routes/api.php文件!
- 请求:如果想要创建“store”方法或“update”方法,将会生成。在app/Http/Requests文件夹中。
- 转换器:如果需要,将会生成。在app/Http/Transformers/Api文件夹中。
在执行此命令期间,Laravel应用程序将停止服务(在最后隐式调用php artisan down
然后php artisan up
)。
在最后将调用Composer dump autoloads。
app:makeApiModelResourceAssets
php artisan app:makeApiModelResourceAssets
仅限开发环境使用!
生成并修改仪表板中新的资源模型的基本资产源文件。
- 资源模型列表Vue组件:创建在resources/assets/js/components/dashboard文件夹中。
- 资源模型项Vue组件:创建在resources/assets/js/components/dashboard文件夹中。
- 资源模型本地化js文件:创建在resources/assets/js/locales文件夹中(每个语言一个文件)。
- 路由本地化js文件resources/assets/js/locales/en/routes.js和其他语言文件:修改以添加资源模型列表和项路由。
- Vuex存储js文件resources/assets/js/store.js:修改以添加资源模型状态、获取器、突变和动作。
- Routes js 文件 resources/assets/js/routes.js : 修改 以添加资源模型列表和条目路由。
- 侧边栏菜单 vue 组件文件 resources/assets/js/components/includes/sidebar-menu.vue : 修改 以添加资源模型链接 (交互式)。
在执行此命令期间,Laravel应用程序将停止服务(在最后隐式调用php artisan down
然后php artisan up
)。
请确保运行 npm run dev
或 npm run watch
来检查您的资源编译。
(即将进行的升级:对模型资源进行分析以完成新组件字段和其他类似的内容。)
openApiSchemas:generate
php artisan openApiSchemas:generate
此命令由 rygilles/laravel-openapi-schema-generator 包提供。
它将分析您的 laravel 项目文件并生成一个 openapi json 文件,描述您的 API 功能。
在运行此命令之前,请检查 config/openapischemas.php 配置文件。
一些信息无法由脚本自动检索,您可能需要在 "openapi_bindings" 配置数组 中更新/添加数据。
ide-helper:generate
php artisan ide-helper:generate
此命令由 barryvdh/laravel-ide-helper 包 提供。
仅适用于开发环境
此包生成一个您的 IDE 可以理解的文件,因此它可以提供准确的自动完成功能。生成基于您项目中的文件,因此它们始终保持最新。如果您不希望生成它,您可以将预先生成的文件添加到您的 Laravel 项目的根目录中(但这不如自行生成的文件更新)。