# GenAPI **Repository Path**: dhl-plum/gen-api ## Basic Information - **Project Name**: GenAPI - **Description**: 一个简单的通用API服务,可以快速创建数据库API接口,无需编写代码。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-22 - **Last Updated**: 2025-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GenAPI - 通用API服务 [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Language](https://img.shields.io/badge/Language-Go-blue.svg)](https://golang.org/) [![Platform](https://img.shields.io/badge/Platform-Windows-blue.svg)](https://windows.com) > 一个简单的通用API服务,可以快速创建数据库API接口,无需编写代码。 ## 项目简介 GenAPI是一个基于Go语言开发的轻量级通用API服务框架,设计目标是实现"低代码"甚至"零代码"的数据库API接口创建。通过简单的SQL模板定义,您可以快速构建功能完备的RESTful API,而无需编写和部署复杂的后端代码。 项目支持多种数据库系统、动态参数、热重载配置和多SQL定义等特性,适用于快速原型开发、内部系统集成和中小型项目的API需求。 ## 核心特性 1. **低代码开发**:通过SQL模板定义API,无需编写后端代码 2. **多数据库支持**:兼容MSSQL、MySQL、PostgreSQL等主流数据库 3. **RESTful接口**:符合REST设计风格的API端点 4. **热重载配置**:修改配置和模板无需重启服务 5. **模板语法支持**:使用Go template标准库提供强大的逻辑处理能力 6. **多SQL定义**:在单一模板文件中支持多个SQL操作 7. **数据库存储模板**:支持从数据库加载模板 8. **参数安全处理**:内置防SQL注入机制 9. **独立可执行文件**:无需依赖,一键部署 ## 快速开始 1. 下载`genapi.exe`或从源码编译生成可执行文件 2. 复制并修改`config.json`配置文件,设置数据库连接信息 3. 在`templates`目录创建API模板文件 4. 运行`genapi.exe`启动服务 5. 访问`http://localhost:9091/api/路径?参数=值`调用API ## 安装方法 ### 从预编译版本安装 1. 从[发布页面](https://gitee.com/dhl-plum/GenAPI/releases)下载最新版本 2. 解压到任意目录 3. 配置`config.json`文件 4. 双击`genapi.exe`运行或使用Windows服务部署 ### 从源码编译 ``` git clone https://gitee.com/dhl-plum/GenAPI.git cd GenAPI go build -o genapi.exe ``` ## 配置示例 `config.json`配置文件示例: ```json { "driver": "mssql", "dsn": "server=127.0.0.1;user id=sa;password=密码;database=数据库名;port=1433;encrypt=disable", "port": 9091, "api": "/api/%s", "memo": "驱动可选:mssql/mysql/postgres", "query": "SELECT 模板 FROM API WHERE 路由 =? and 方法=?", "template_dir": "templates", "hot_reload": false, "reload_interval": 600 } ``` ## 模板示例 ### 基础查询模板 `users.get`: ```sql select * from users {{if .id}}where id = {{sqlValue .id}}{{end}} ``` ### 复杂模板示例 `api.get`: ```sql {{define "list"}} -- 获取API列表 select * from API {{if .route}}where 路由 like {{sqlString (printf "%%%s%%" .route)}}{{end}} {{end}} {{define "detail"}} -- 获取单个API详情 select * from API where RecordID = {{sqlValue .id}} {{end}} ``` ## API调用示例 ### 基础查询 ``` GET http://localhost:9091/api/users?id=1 ``` ### 自定义操作 ``` GET http://localhost:9091/api/api/list?route=user GET http://localhost:9091/api/api/detail?id=1 ``` ### 数据修改 ``` POST http://localhost:9091/api/users Content-Type: application/json { "name": "张三", "email": "zhangsan@example.com" } ``` ## 常见问题 1. **配置热加载不生效** - 确认`hot_reload`设置为`true` - 检查`reload_interval`值是否过大 2. **数据库连接失败** - 检查DSN连接字符串格式 - 确认数据库服务器是否可访问 - 验证用户名和密码是否正确 3. **模板不生效** - 检查模板文件命名格式 - 确认SQL语法在目标数据库上有效 - 查看错误日志获取详细信息 ## 技术栈 - **Go**: 核心开发语言 - **标准库**: - `net/http`: HTTP服务 - `text/template`: 模板引擎 - `database/sql`: 数据库抽象层 - **外部依赖**: - `github.com/denisenkom/go-mssqldb`: MSSQL驱动 - `github.com/go-sql-driver/mysql`: MySQL驱动 - `github.com/lib/pq`: PostgreSQL驱动 ## 许可证 本项目采用 MIT 许可证,详见 [LICENSE](LICENSE) 文件。 ## 联系方式 - 项目地址: [https://gitee.com/dhl-plum/GenAPI](https://gitee.com/dhl-plum/GenAPI) - 问题反馈: 请在Gitee提交Issues