# Viewer **Repository Path**: ThoughtSet/Viewer ## Basic Information - **Project Name**: Viewer - **Description**: Viewer 是一款基于SpringBoot构建的API敏捷开发平台,突破传统编码范式,提供从SQL到API的一站式数据服务能力。通过可视化SQL工作台,开发者无需编写Java代码即可发布标准RESTful接口,针对查询、大屏场景提供快速迭代方案,助力企业快速构建高性能数据决策系统。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2025-03-10 - **Last Updated**: 2025-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: 低代码, MyBatis, 快速开发平台, AI, MCP ## README # Viewer - 零代码API开发平台 ![License](https://img.shields.io/hexpm/l/plug.svg) ![SpringBoot](https://img.shields.io/badge/SpringBoot-3.x-green.svg) ![MySQL](https://img.shields.io/badge/MySQL-5.7%2B-orange) jdk-17 ## 🚀 项目简介 Viewer 是一款基于SpringBoot构建的API敏捷开发平台,突破传统编码范式,提供从SQL到API的一站式数据服务能力。通过可视化SQL工作台,开发者无需编写Java代码即可发布标准RESTful接口,针对查询、大屏场景提供快速迭代方案,助力企业快速构建高性能数据决策系统。 ## ✨ 核心特性 - **零代码开发**:告别Controller/Service/Dao编写 - **MyBatis SQL支持**:直接使用熟悉的SQL语法开发接口 - **可视化操作**:通过Web界面完成API开发全流程 - **任意数据库**:默认支持MySQL可通过自定义驱动,通过界面自行扩展,支持所有JDBC连接的数据库 - **多种方式查询**:通过自定义http请求和自定义连接器,实现对第三方系统的集成 - **多数据源**:通过多数据源,支持在一次请求中可跨数据源,跨系统查询 - **AI辅助**:通过FunctionCall,轻松实现AI与业务数据的结合 - **高性能**:基于SpringBoot的轻量级架构 - **实时生效**:支持动态创建、修改API;动态创建、修改数据源。热部署全程无感。 ## 🚀 5分钟快速体验 ### 1. 下载运行 ```bash # 下载最新JAR包(约15MB) #Window启动命令: java -jar viewer-apis-service.jar #Linux下后台进程启动命令: nohup java -jar viewer-apis-service.jar >catalina.out 2>&1 & #关掉项目: ps -ef|grep java kill 进程号 ``` ## 📖 使用指南 ### 创建第一个API 1. 访问 `http://localhost:11791` 登录管理界面 2. 在"数据源管理"中添加数据源(支持所有支持JDBC连接的,自定义连接器等) 3. 在"查询语句"中创建新方法,选择刚才创建的数据源 4. 编写符合mybatis的SQL查询语句,例如: ```xml ``` 或者http请求,如果是post请求添加``标签: ```xml /department/list?access_token=${ACCESS_TOKEN} &id=${id} { get_party_path:${get_party_path} } ``` 5. 在"设定方法"中添加所需参数, 6. 配置执行细节,使用Spel表达式进行参数映射 7. 在"设定接口"中创建新API,选择刚才创建的方法,同时设置API路径(如`/api/v1/users`) 8. 保存后返回查询界面,点击"启动"按钮即可通过API网关访问 ### 创建MCP服务 1. 访问 `http://localhost:11791` 登录管理界面 2. 在"McpServer"中创建新McpServer端点 3. 选择需要对外提供的的方法,同时设置服务名,SSE路径(如`/sse`),消息端点(如`//mcp/messages`)等信息 4. 保存后返回查询界面,点击"启动"按钮即可被mcp服务访问 ![mcp server验证截图](images/mcpservershow.png) ## 📌 示例展示 ### 自定义驱动 ![自定义驱动截图](images/linkerConfig.png) ### 创建数据源 ![创建数据源界面截图](images/dsConfig.jpg) ### 查询语句 ![查询语句界面截图](images/queryBody.png) ### 设定方法 #### 方法参数 ![方法参数截图](images/funInfo.png) #### 执行细节 ![执行细节截图](images/funInfo2.png) ### 设定接口 ![设定接口截图](images/ApiInfo.png) ### 基础信息 ![基础信息界面截图](images/env.png) ### MCP #### mcp server端点 ![mcp server端点截图](images/mcpserver.png) #### mcp server验证 ![mcp server验证截图](images/mcpservershow.png) ### AI 相关 #### AI端点 ![AI端点截图](images/AiNode.png) #### 模型设置 ![模型设置截图](images/ModelParam.png) #### Function Call 逻辑块 ![FunctionCallBlock截图](images/FunctionCallBlock.png) #### 运行结果 ![FunctionCallResult截图](images/FunctionCallResult.png) ## ⚙️ 生产环境配置 ### 创建 `application.yml` 文件: ```yaml server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/your_db username: db_user password: db_pass ``` ### 然后运行: ```bash java -jar viewer-apis-client.jar --spring.config.location=application.yml ``` ### 防止管理页面被公网访问,运行: ```bash java -jar viewer-apis-service.jar --spring.config.location=application.yml ``` ## 功能规划 1. ✔️MCP SERVER (v1.2.0) 2. ✔️Function Call (目标版本 V1.3.0) 3. ✔️加入AI数据源(deepseek,openai,zhipu) (目标版本 V1.3.0) 4. ✔️MCP CLIENT (计划版本 V1.4.0) 5. ⏳添加图像,音频,视频类多模态AI模型的支持 6. ⏳补充支持mybatis \ 注解(支持resultMap中的id,result,association,collection标签;result标签中property,column,javaType;collection中的columnPrefix属性) 7. 加入查询缓存 8. 执行算子(lua,js脚本) 9. 支持MCP协议全部功能 10. 服务器间数据拷贝 11. 定时任务 12. 接口认证 13. 优化导出 14. 结合jdk25+springboot4优化 \ 15. spring native 16. AI Agent能力 17. 响应式接口 18. 并行查询 19. 在管理端使用自然语言辅助生成查询 ## 🤝 参与贡献 欢迎提交Issue和PR,贡献流程: 1. Fork本项目 2. 创建分支(`git checkout -b feature/xxx`) 3. 提交修改(`git commit -m 'feat: xxx'`) 4. 推送到远程(`git push origin feature/xxx`) 5. 创建Pull Request ## 📜 开源协议 MIT License - 自由修改和商用,但需保留原始版权声明 ## ☎ 联系我们 - 欢迎大家提需求和建议[【新建issuses】](https://gitee.com/ThoughtSet/Viewer/issues/new)!(详细描述你的原始需求,我们会帮你提供一些方案,节约大家的成本) - **内推项目** 如您觉得项目不错,可推荐到公司,建立长期稳定的商业合作,提供更专业的技术服务。 [//]: # (## 分支命名规则) [//]: # (- `feat/*`:新功能开发) [//]: # (- `fix/*`:问题修复) [//]: # (- `docs/*`:文档更新)