编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

基于GoFrame + APIJSON 的零代码平台:前后端解...

wxchong 2024-09-16 07:15:52 开源技术 9 ℃ 0 评论

基于 GoFrame + APIJSON 的零代码平台:前后端解耦、DSL 驱动与动态表单建模的技术方案的一些思考,有兴趣大家可以讨论一下。

基于 GoFrame 框架和 APIJSON 技术构建的零代码平台,通过前后端完全解耦、DSL 驱动以及动态表单建模,实现复杂的数据库操作和动态表设计。平台特别引入了 DuckDB 支持轻量级单机和数据分析应用,同时让用户无需关心底层数据库结构,自动生成表结构并执行操作。

一、项目背景与愿景

为了让开发者和业务人员不再关心复杂的数据库表结构设计问题,我们的零代码平台提供了动态表单建模的功能。通过 DSL 驱动,用户可以通过可视化配置方式定义数据模型 (MODEL),自动创建和更新数据库表结构,简化了数据管理过程,真正实现了“零代码”操作。

该平台通过前后端解耦,用户只需通过简单的 API 请求或 DSL 定义操作需求,后端则根据表单类型和数据模型动态生成表结构。平台的最终目标是为用户提供高效、灵活、自动化的数据操作体验。

二、开发计划与技术实现

1. 动态表结构的设计与创建

? 基于 DSL 的 MODEL 定义:

用户可以通过 DSL 定义表单类型 (如:字符串、整数、日期等),平台自动生成相应的数据库表结构。这样,用户不再需要手动设计数据库表结构,表单类型驱动了整个表结构的创建和更新过程。

DSL 模型定义示例:

create model users (
  id int primary key auto_increment,
  name varchar(255),
  age int,
  email varchar(255) unique,
  created_at datetime default current_timestamp
);

该 DSL 语法定义了一个名为 users 的表,包含 id、name、age、email 和 created_at 字段。平台会解析这个 DSL 语法,并自动生成相应的 SQL 语句来创建表。

生成的 SQL:

CREATE TABLE IF NOT EXISTS users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255),
  age INT,
  email VARCHAR(255) UNIQUE,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

自动生成表结构:
当用户提交数据模型定义后,平台会自动解析 DSL 语法,根据模型定义自动生成或更新数据库表结构。用户无需手动编写 SQL 语句或调整数据库表,所有的表结构变动都会由 DSL 自动处理。

API 请求示例:

{
  "action": "create_model",
  "model": {
    "name": "products",
    "fields": {
      "id": { "type": "int", "primary_key": true, "auto_increment": true },
      "name": { "type": "varchar", "length": 255 },
      "price": { "type": "decimal", "precision": 10, "scale": 2 },
      "created_at": { "type": "datetime", "default": "current_timestamp" }
    }
  }
}

后端接收到 API 请求后,会动态创建 products 表,无需用户编写 SQL。

2. 动态表单驱动数据库结构

? 表单类型驱动表结构:

用户提交表单时,后端会根据表单字段的类型和格式,自动生成或更新数据库表。例如,用户定义一个包含 姓名、年龄 和 邮箱 的表单,系统会自动创建或更新相应的数据库表,并确保字段类型与表单格式一致。

示例表单数据:

{
  "form": {
    "fields": [
      { "name": "name", "type": "text" },
      { "name": "age", "type": "number" },
      { "name": "email", "type": "email" }
    ]
  }
}

根据表单中的字段类型,平台会动态生成 name、age 和 email 的对应字段,并映射到数据库表。

生成的 SQL 表结构:

CREATE TABLE IF NOT EXISTS form_data (
  name VARCHAR(255),
  age INT,
  email VARCHAR(255)
);

表单类型与动态映射:

当用户提交表单时,平台会自动检测表单字段的变化,如果表结构不存在或发生变化,系统将动态创建或更新数据库表。用户无需手动调整数据库表,所有结构变动由表单驱动自动完成。

3. 前后端解耦与 DSL 驱动

? 统一的 API 规范:

平台为前端开发者提供统一的 API 请求,无需关心底层的数据库操作逻辑。通过 DSL 或 API 请求,前端人员可以实现动态表的创建、更新和数据操作。后端自动处理表结构的变化,并执行数据存储和管理操作。

CURL 请求示例:

curl -X POST https://api.example.com/create-model \
-H "Content-Type: application/json" \
-d '{
  "model": {
    "name": "customers",
    "fields": {
      "id": { "type": "int", "primary_key": true, "auto_increment": true },
      "full_name": { "type": "varchar", "length": 255 },
      "birthdate": { "type": "date" },
      "email": { "type": "varchar", "length": 255, "unique": true }
    }
  }
}'

? DSL 驱动的操作方式:

用户可以通过 DSL 定义表结构、插入数据或进行查询。DSL 提供了一种简单的、高层次的抽象语言,屏蔽了底层的复杂逻辑。前端开发者无需具备后端开发经验,只需通过 DSL 语句定义和操作数据。

DSL 请求示例:

insert into users (name, age, email) values ('John Doe', 30, 'john@example.com');

后端会解析 DSL,并自动执行插入操作,用户无需编写复杂的 SQL 语句。

4. 表单与业务逻辑的微函数结合

? 微函数动态处理表单数据:

在 DSL 驱动的系统中,后端提供可复用的微函数模块处理表单提交后的业务逻辑。例如,用户在提交表单时,调用 validateEmail 函数检查邮箱格式是否正确,或者调用 calculateDiscount 函数处理订单折扣逻辑。

微函数调用示例:

validateEmail(email) and calculateDiscount(orderAmount) > 50;

用户在表单提交时,系统会调用这些微函数,自动处理业务逻辑,并根据结果进行相应的数据库操作。

5. 权限控制与安全性

? 基于用户角色的权限控制:

后端系统为不同的用户角色提供基于字段级和表级的权限控制。用户可以定义谁有权创建或更新表结构,谁能执行表单提交或数据查询操作。权限控制会与 DSL 驱动紧密结合,确保不同用户的操作权限。

? 数据安全与验证:

平台内置了强大的数据验证机制,确保每个 DSL 请求中的字段和数据类型是合法的。用户提交表单时,系统会自动过滤非法输入,避免 SQL 注入等常见安全问题。

三、平台核心功能与技术优势

1. 动态表结构创建:通过 DSL 定义表结构,后端自动解析并创建数据库表,简化表设计流程。

2. 表单类型驱动数据库结构:用户提交表单后,平台根据表单字段自动生成或更新数据库表,无需手动调整表结构。

3. DSL 驱动的操作方式:前端通过简单的 DSL 语句定义数据库操作,无需编写复杂 SQL,后端自动生成相应操作。

4. 微函数与 DSL 集成:支持调用微函数处理复杂业务逻辑,如验证、计算等,使得 DSL 具有极高的灵活性。

5. 多数据库支持与动态映射:平台支持多种数据库(如 MySQL、DuckDB 等),并能动态映射表结构,适应不同应用场景。

6. 前后端解耦与统一 API:前端与后端完全解耦,开发人员通过统一的 API 和 DSL 操作后端数据,屏蔽底层复杂

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表