介绍
美好的一天,今天我们将构建一个完整的 CRUD 系统(Web 和 API)。 API 是一种软件中介,它允许两个应用程序相互通信。 您可能需要创建一个可以在不同语言或框架上运行的应用程序,例如,您可以使用 Laravel 为您的应用程序创建后端,而前端可以在任何 JavaScript 框架上运行。 API 允许两个或多个程序相互通信。
有不同类型的 API,但今天我们将专注于 RESTful API。 REST 代表 Representational State Transfer,而 API 代表应用程序编程接口。 您可以从 Internet 或其他编程材料中阅读有关 API 的更多信息。
先决条件
我们将使用一个名为 Laragine 的 Laravel 包,这个包可以帮助我们通过编写简单的命令来创建一个完整的 CRUD 系统。不用多说,让我们深入了解它。
什么是拉力精?
Laragine 是一个 Laravel 包,它是为了使用模块来管理你的大型 Laravel 应用程序而创建的,假设你将构建一个博客,该博客由(post-comment-like)组成,blog-> 是一个模块,(post-comment-像)-> 称为单元 Laragine 构建了具有所有 CRUD 功能的模块和单元(迁移 – 工厂 – 测试 – 控制器 – 模型)你所要做的就是在路由文件中包含链接,太棒了,对!
在本教程中,我们将只为具有完整 CRUD 功能的博客创建一个帖子,因此我们将创建一个名为 blog 的模块,然后我们将创建一个名为 post 的单元,您现在可能会问我们为什么要构建应用程序以模块化方式?如果您不知道,请参阅我创建的这篇文章,讨论我们如何在 Laravel 中组织大型项目。
第 1 步:安装 Laravel 8
要安装最新的 Laravel 框架(截至本文发布时为 Laravel 8.0),请运行以下命令
作曲家创建项目 –prefer-dist laravel/laravel laravel_8
这将自动创建一个 Laravel 8 应用程序,并且已经设置了一些东西,我们不需要复制和重命名 env.example 文件,Laravel 8 会自动为我们完成。
Laravel 8 还有一个重要的事情,你不需要生成 APP_KEY,这个新版本也会为我们生成它。
完成所有设置后,我们的应用程序就准备好了。
第 2 步:数据库设置
创建一个空数据库,打开 .env 文件,然后更新您的数据库配置。
第 3 步:需要 Laragine 包装
让我们安装 Laragine。
composer require yepwoo/laragine
第 4 步:安装 软件包
包含 Laragine 后,您必须通过运行以下命令来安装它:
php artisan laragine:install
这是 Laragine 的初始命令
笔记
运行该命令后,Laragine 目录将在 core 目录下的根目录下。
第 5 步:创建博客模块
运行以下命令并指定模块的名称,在我们的例子中将是 blog
php artisan laragin:module blog
- 任何模块都将添加到 core directory
- 运行命令后,博客目录将在 core 目录中。
第 6 步:创建单元
创建我们的模块(博客)后,我们需要创建一个帖子,对吧?
单元命令由 2 个命令组成
初始化命令:
创建所有基本文件并将创建一个 JSON 文件,我们将指定我们想要将其添加到数据库的属性,我们应该指定我们想要在其下添加单元的模块的名称,即 blog in this 例子。
第二条命令:
这是没有 init 选项的相同命令,该命令将根据我们在 JSON 文件中指定的数据自动创建以下所有文件。
- 移民
- 要求
- 资源
- 工厂
- 单元测试
让我们运行命令,我们应该指定要在其下创建单元的模块的名称和单元的名称
php artisan laragin:unit post –module=blog –init
我们包括 –init 因为它是 unit 命令的第一部分
运行命令后,它将生成基本文件 Controller (API – web) – Model 以及我们将在其中写入属性的 JSON 文件。
现在我们应该在 Post.json 文件中指定我们的属性,让我们首先知道我们需要哪些属性! 让我们从这篇文章的基础开始我只是想告诉你如何使用这个包,你可以添加你想要的任意数量的属性,任何帖子都有标题、正文、缩略图
笔记
如果我们不将属性设置为可为空,则默认情况下将需要
属性:
- 标题 -> 类型: 字符串 ,定义:唯一
- 正文 -> 类型:文本,
- 图像->类型:字符串,定义:可为空
现在让我们转到 core/blog/data/Post.json 中的 JSON 文件来编写我们的属性。
笔记
我们在 JSON 文件中写入任何属性时都应该遵循规则,有两种类型的配置类型和定义
- type:是属性的类型,您应该将其编写为文档中指定的 Laravel,您可以从此处检查 Laravel 中的所有类型
- 定义:用于列修饰符,您也应该将其编写为文档中指定的 Laravel,您可以从此处查看
如果你意识到我没有写 required 因为包会自动添加它。
让我们运行单元命令的第二部分
php artisan laragin:unit post –module=blog
运行命令后,它会生成迁移 – 请求 – 资源 – 工厂 – 单元测试 – 等文件,并且它们已完全实现。
让我们看看迁移文件,你会看到所有属性都自动添加了我们在 JSON 文件中指定的配置,魔术,对
- 现在让我们运行 migrate command
php artisan migrate
第 7 步:添加 API 路由
添加 Route::apiResource(‘posts’, ‘PostController’); in api.php in core\Blog\routes\api.php
笔记
我们不需要实现 CRUD 方法,它已经在 PostController 的 core\Blog\Controllers\API\PostController 中实现了。
第 8 步:测试
- 打开 Postman 或您用于测试 API 的任何其他软件
- 不要忘记放入 header Accept: application/json
- 让我们先创建一个新帖子
- 让我们创建另一个帖子,但不包括标题来测试它是否会返回错误
现在你想知道它是如何给我们的 title 属性是必需的,对吧? 让我们看看 core/Blog/Requests 中的 PostRequest 文件,我们指定的所有属性都在文件中并进行了一些验证,Laragine 为我们完成了这项工作。
笔记
您可以在请求文件或任何其他文件中修改所需的任何属性
Resources – unit test – etc…
- 让我们获取所有帖子
- 让我们更新帖子
在测试更新方法之前,您可能想要更改更新请求(put)中的验证,您可以在 put 方法的 core/Blog/Requests 文件中的 Post Request 中执行此操作
- 让我们删除帖子
结论
在本文中,我只是向您展示了 Laragine 包的一个功能,在下一个教程中,我将通过简单的配置来教您如何使用单元测试。