starlight93/laravel-smart-api

RESTful API 生成器

v1.2.1 2023-10-17 22:18 UTC

This package is auto-updated.

Last update: 2024-09-15 08:36:06 UTC


README

在线编辑器

通过在线编辑器编辑 laravel 或 lumen 项目,使用 HTTP(s) 协议,安全且快速:[https://ngopi.netlify.app](https://ngopi.netlify.app) 或 [https://ngopi.vercel.app](https://ngopi.vercel.app)

背景

在线编辑器对于提高开发效率、发布应用程序非常有用,甚至可以直接在 staging 服务器上进行,这样开发者的笔记本电脑使用寿命会更长,因为不需要运行 localhost 版本。

我们曾经遇到的各种在线编辑器

  1. 支持直到提交的在线 Gitlab/Github 编辑器,无需从本地进行推送。Git 服务器已经为此提供了支持,其编辑器有限制(通常使用 Monaco Editor 库,即 VSCode 的核心)
  2. 编辑器上的各种扩展,如 VSCode、Atom、Sublime 等,基于 FTP。开发者可以使用他们信任的编辑器在线编辑项目,使用 FTP 协议。然而,跟踪文件更改是一个大问题,尤其是当多个开发者同时编辑同一文件时。刷新文件列表也不是实时的。
  3. 另一种使用不同协议的扩展是 SSH。开发者可以使用这种安全协议直接在服务器上编辑文件,就像在本地进行编辑一样随意。这就是苏丹感觉像是项目文件夹的所有者一样。然而,如果我们只为“在线编辑”提供 SSH 访问权限,而这些权限不应该授予开发者,那么感觉有些令人不快。

这三个都非常有用,尤其是当项目不是由单个开发者独立完成时。而常规的做法是使用 localhost 和 git 与 CI/CD 配合,将应用程序部署到实际服务器,这已经非常强大和理想。然而,对于某些特殊情况,CI/CD 需要高昂的成本,无论是服务费用还是手动更换安全密钥以访问目标服务器。此外,收集多个开发者的工作成果(无需大量代码审查)变得非常缓慢。因此,从开发到发布,再到测试人员的应用程序端审查,整个过程都变得非常缓慢。

最终,这个包成为我们轻松快速编辑项目的另一种解决方案,安全(因为 HTTP(s) 协议就像普通网页一样),实时,并且当然会限制开发者的不必要操作。限制操作的意思是什么?在线编辑器具有易于理解的模式,引导开发者进入特定的作业模式(不能自由创建文件)。

在线编辑器 API

功能

  • 在线编辑器使用 Monaco Editor(VSCode 的核心)进行构建,并进行了定制,以使其更轻量并提高生产力
  • 通过限制开发者创建文件以开始项目模式
  • 无需命令行创建、编辑和执行迁移文件(up - down)
  • 无需命令行创建、编辑和执行变更文件(up - down)
  • 自动创建与迁移相关的模板模型,可以按需编辑,如角色、事件 CRUD、响应格式。
  • 可视化最后 10 行数据视图
  • 在编辑器中可视化查询语句的数据视图
  • 通过编辑器运行查询(默认回滚)或提交以创建、更新、删除
  • 数据编辑器(CRUD + 提交)带有内置的迷你数据库客户端
  • 创建、编辑和执行预览测试文件的结果
  • 使用以下功能创建、编辑和发布 blade 文件和 JavaScript 文件
  • 截断表的特性
  • 创建、编辑和自动加载类,用于 CRUD 之外的需求,例如在 app/Cores 文件夹中集中在一个类中的复杂逻辑
  • 可编辑的备份文件(非生成文件)和数据库的备份特性
  • 将备份文件恢复到数据库的特性
  • 项目间同步(复制项目)的特性
  • 文件更改跟踪的可视化(类似于 git 的迷你差异文件)
  • 数据上传特性,可以从 Excel 和查询粘贴数据,然后再上传
  • 如果项目已运行且不再需要编辑,则可以安全地关闭此编辑器功能

安装

  • 创建新的 Laravel 项目,如官方教程中所述 教程
  • 进入新创建的项目的根目录
  • 使用 composer 安装包
   composer require starlight93/laravel-smart-api
  • 注册 Editor 和 API Generator 提供者

  • Laravel:打开 config/app.php 文件,在 key: providers 部分,添加以下代码 Starlight93\LaravelSmartApi\ApiServiceProvider::class

  • Lumen:打开 bootstrap/app.php 文件,添加以下行

   $app->register(Starlight93\LaravelSmartApi\ApiServiceProvider::class);

对于 Lumen,无需启用 withFacades() 和 withEloquent(),因为它们将自动由提供者生成器启用

启动项目

  • 在 git ROOT 项目中关闭文件权限跟踪(如果项目之前已使用 git init 初始化)
   git config core.fileMode false
  • 在 ROOT 项目的控制台命令行位置,执行以下步骤
   php artisan project:start

环境变量

详细信息请查看 vendor/starlight93/config/。以下变量可以放置在 .env 文件夹的项目中

基本环境键

  • 在 .env 文件中进行设置后,请确保数据库连接设置正确,然后应用程序将能够自动创建模型(在 /app/Models/CustomModels 中),这与数据库中的表内容(逆向工程)相对应。执行以下 CLI 命令
   php artisan project:model

REST API 生成器

通过创建迁移文件或现有的数据库结构,您将获得以下完整功能

  • 创建、读取、更新、删除(CRUD)REST API 单个、详细信息以及子详细信息,没有子级限制
  • 自动关联使用 srcfk 列的 fake-relation(注释表)
  • 搜索、分页、筛选、排序和标准读取 API 的功能
  • 根据数据库列中的数据类型和长度自动验证
  • 根据数据库自动创建生成的模型文件(逆向工程)
  • 根据数据库自动创建默认的定制模型文件(可编辑)(逆向工程)
  • 根据数据库自动创建可视化数据库和关系(逆向工程)
  • 根据数据库自动创建迷你 API 文档和关系(逆向工程)
  • 错误记录到表和通知
  • 可以在其他项目中使用模式/编码(无需生成器)
  • 零配置 JWT 认证
  • 零控制器
  • 零配置路由
  • 零配置调度器
  • 多 .env 文件,根据子域名或端口
  • 许多在项目中经常使用的辅助功能,例如导出 PDF、Excel 以及直接打印