alexpensato / laravel-api-maker
自动化生成您的REST API
Requires
- php: ^7.1.3
- ext-json: ^1.6
- codeception/specify: ^1.1
- codeception/verify: ^1.0
- guzzlehttp/guzzle: ^6.3
- illuminate/support: ^5.6
- league/fractal: ^0.17
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-28 02:07:25 UTC
README
使用控制台生成命令 make:api 自动化生成您的REST API
简介
此包是 laravel-api-generator 包的扩展版本。它包括一个完全重写的 BaseController,现在更名为 ApiController。此包还提供了两种新的控制器类型:用于不需要写入能力的 API 的 ReadOnlyController;以及用于需要支持前端脚手架视图的应用的 WebController。
此包依赖于 Repository 设计模式,这意味着 控制器 将通过 Repository 接口访问 模型,从而提供了更好的数据访问方法和业务规则的关注点分离。此仓库实现灵感来源于 Connor Leech 和 Jeff Decena 的文章。
此包还使用 Codeception/Specify 和 Codeception/Verify 包,以帮助您开始使用 BDD 风格的单元测试。
此增强版本的 控制台生成器 在单个命令中为每个模型创建以下文件
-
ApiController 扩展类
-
Fractal 转换器类
-
Repository 接口
-
Repository 实现类
-
配置为 BDD 的单元测试文件
它还修改了以下配置文件
-
向 routes/api.php 添加路由
-
向 ApiServiceProvider 添加仓库绑定
此包旨在帮助您开始使用专业的 REST API 最佳实践。
兼容性
安装
步骤 1 - 运行 composer require alexpensato/laravel-api-maker
步骤 2 - 将 ApiServiceProvider
类复制到 app/Providers
文件夹
cp -R vendor/alexpensato/laravel-api-maker/templates/Providers app/Providers
并查看您得到了什么。
步骤 3 - 在 config/app.php
配置文件中注册服务提供者
<?php 'providers' => [ ... /* * Package Service Providers... */ Pensato\Api\ServiceProvider::class, /* * Application Service Providers... */ App\Providers\ApiServiceProvider::class, ], ?>
步骤 4 - Laravel 已经提供了一个 API 路由文件。为了正确配置控制台生成器自动化过程,您需要选择 vendor/alexpensato/laravel-api-maker/templates/routes/api.php
中提供的其中一个路由模板,然后将其复制到项目的 API 路由文件。
例如,将以下代码复制到您的 routes/api.php
项目文件的末尾。
<?php Route::group(['prefix' => 'v1'], function () { // });
这将允许控制台生成器自动将资源路由注入到 API 路由文件。
使用
生成器
添加和需要的唯一控制台命令是 artisan make:api <ModelName>
。
想象一下,您需要创建一个 REST API 来列出/创建/更新等用户表中的用户。为了实现这一点,您需要执行大量的样板操作 - 创建控制器、转换器、仓库、单元测试、设置所需的路由和配置仓库绑定。
php artisan make:api User
会为您完成所有工作。
请注意,此命令假设 模型 已经在 Models
文件夹中创建。
例如,您可以使用以下命令创建模型
php artisan make:model -mf Models/<ModelName>
约定
你可能已经注意到,刚刚生成的Controller
类包含两个公共方法:__constructor()
和transformer()
。这是因为你只需要这些方法在你的控制器中设置基本的REST API。
默认可用的路由列表
GET api/v1/users
GET api/v1/users/{id}
POST api/v1/users
PUT api/v1/users/{id}
DELETE api/v1/users/{id}
请求和响应格式都是JSON。响应格式由Fractal定义。
通过$_GET['include']
支持Fractal的包含。
创建和更新的验证规则可以通过在你的控制器中覆盖rulesForCreate
和rulesForUpdate
来设置。
贡献
在填写错误报告或提交新功能时,请尝试包括支持性测试用例。
许可证
本项目采用MIT许可证。
尽管这是一个经过测试的包,但使用风险自负!