alexpensato/laravel-api-maker

自动化生成您的REST API

v1.1.0-beta3 2018-12-27 12:40 UTC

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 LeechJeff Decena 的文章。

此包还使用 Codeception/SpecifyCodeception/Verify 包,以帮助您开始使用 BDD 风格的单元测试。

此增强版本的 控制台生成器 在单个命令中为每个模型创建以下文件

  1. ApiController 扩展类

  2. Fractal 转换器类

  3. Repository 接口

  4. Repository 实现类

  5. 配置为 BDD 的单元测试文件

它还修改了以下配置文件

  1. routes/api.php 添加路由

  2. 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。

默认可用的路由列表

  1. GET api/v1/users
  2. GET api/v1/users/{id}
  3. POST api/v1/users
  4. PUT api/v1/users/{id}
  5. DELETE api/v1/users/{id}

请求和响应格式都是JSON。响应格式由Fractal定义。

通过$_GET['include']支持Fractal的包含。

创建和更新的验证规则可以通过在你的控制器中覆盖rulesForCreaterulesForUpdate来设置。

贡献

…总是受欢迎的。不要犹豫,提交一个错误报告或一个拉取请求

在填写错误报告或提交新功能时,请尝试包括支持性测试用例。

许可证

本项目采用MIT许可证。

尽管这是一个经过测试的包,但使用风险自负!