[纯干货] Magic-API开发指南——新一代后端开发神器

引言:

在现在的软件开发行业,高效的数据接口管理和快速开发是至关重要的,可以这么说,现目前已经有60%的公司已经开始使用低代码平台,还有40%的公司正在转向使用低代码平台的过程。大家都知道,传统的 Java 开发方式较为冗余,需要编写大量的代码来实现数据接口,从建立数据库连接、编写复杂的 SQL 查询语句到构建数据传输对象等一系列步骤,不仅耗时耗力,还容易出现错误。

那什么是低代码平台呢?为什么说低代码平台就可以提高接口开发效率和管理了吗?大家可以看一下这个图片

这个图片中我实现了一次sql查询,如果放在java’中,我需要新建配置文件、导入pom、为了规范呢我还得新建字段类、service,但是低低代码平台中仅需要三行代码去轻松实现!

今天要给大家介绍的 Magic-API 就是一个能够帮助开发者轻松实现这些目标的强大工具,也就是所谓的低代码平台。本文将为新手详细介绍如何快速上手 Magic-API,全是干货,让你一看就会。

 

一、Magic-Api简介

上面也给大家介绍了这么多,相信大家也对低代码平台有个了解了,那么什么是magic-api呢?简单来说,Magic-API 是一个基于 Java 的在线接口文档管理和接口快速开发工具。它允许开发者通过可视化的方式快速创建和管理 API 接口,极大地提高了开发效率。

特点

Magic-API 所使用的脚本语言 Magic-Script,其语法与 Java 和 Javascript 存在相似之处,它融合了二者语法的长处,从而构建出一种全新的语言形式。其友好的语法特性使得学习该脚本语言的成本大幅降低,如此一来,开发者无需耗费精力去钻研那些陌生、奇特的语法规则以及特殊设定。低语法学习成本只是一方面,另一个显著提升开发效率的因素是,对 Magic-API 的代码进行修改后无需重启项目,这在开发中大大提高开发效率,并且magci-api可以在代码编写界面直接进行代码测试,无论是http请求还是查数据,都可以直接看到返回结果无需再借助第三方测试工具。

 

二、快速上手

在开始上手前,大家需要有一定后端的开发只是,范围大概就是使用过maven、了解springboot、电脑也配置好了环境以及数据库。然后大家可以创建一张测试表TestData,结构如下

id name
1 magicApi
2 xiaoQian

1、初始化工程

​ 创建一个空的Spring Boot工程, 以mysql作为默认数据库进行演示。

2、添加依赖

作为演示demo,直接无脑复制粘贴即可

引入Spring Boot Starter父工程:

 
  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>3.4.0</version>
  5. <relativePath/>
  6. </parent>
 

引入magic-api-spring-boot-starter依赖。

 
  1. <dependency>
  2. <groupId>org.ssssssss</groupId>
  3. <artifactId>magic-api-spring-boot-starter</artifactId>
  4. <version>2.1.1</version>
  5. </dependency>
 

引入spring-boot-starter,spring-boot-starter-webspring-boot-starter-testmysql依赖。

 
  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-web</artifactId>
  8. </dependency>
  9. <dependency>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-test</artifactId>
  12. <scope>test</scope>
  13. </dependency>
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-jdbc</artifactId>
  17. </dependency>
  18. <dependency>
  19. <groupId>mysql</groupId>
  20. <artifactId>mysql-connector-java</artifactId>
  21. <version>8.0.27</version>
  22. </dependency>
 

 3、配置application.yml文件

 
  1. server:
  2. port: 9999
  3. magic-api:
  4. #配置web页面入口
  5. web: /magic/web
  6. resource:
  7. #配置文件存储位置。当以classpath开头时,为只读模式
  8. #mac用户请改为可读写的目录
  9. #如果不想存到文件中,可以参考配置将接口信息存到数据库、Redis中(或自定义)
  10. location: D:/data/magic-api
  11.  
  12. spring:
  13. datasource:
  14. driver-class-name: com.mysql.jdbc.Driver
  15. url: jdbc:mysql://localhost:3306/magic-api-test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
  16. username: root
  17. password: 123456
 

 4、启动项目并访问Api管理界面

1、2、3都完成后,我们直接启动项目,访问http://localhost:9999/magic/web 即可看到Web页面,或者关注启动信息,第三个就是

5、一分钟写出Demo接口

右键分组,点击新建接口。

在新建的接口这里输入下面代码,然后在页面下方填写好接口名称以及接口路径

 
  1. var sql = """
  2. select * from test_data
  3. """
  4.  
  5. return db.select(sql)
 

 访问可以通过web界面执行也可以通过apifox(接口路径直接右键接口然后复制路径)。

小结

​这只是一个很简单的入门demo,但是大家应该也能通过以上几个步骤,去体验到低代码的便捷性,我们实现一个简单的查询功能。省去了ControllerServiceDaoMapperXMLVO模板代码的工作量,并且也降低bug的产出率,这对后端开发来说是非常友好且必要的。

 

三、进阶用法

发送HTTP POST请求并拿数据
 
  1. var url = "http://123.123.123:8880/test";
  2. var data = {
  3. "name":"xiaoqian"
  4. }
  5. var rows = http.connect(url).header({"Content-Type": "application/json"}).body(data).post().getBody();
 
获取请求内容
 
  1. http://localhost:9999/xxx/xxx
  2. name=abc&age=49
  3.  
  4. #这样的表单参数magic-api 也会自动将name和age映射为同名变量。
 
 
  1. {
  2. "name": "magic-api",
  3. "version": "9.9.9"
  4. }
  5.  
  6. #如要获取name属性 则可通过 body.name 来获取
 
定义函数
 
  1. const test = ( test ) => {
  2. test=1
  3. return test;
  4. }
 
for循环
 
  1. for(index,item in list){ //如果不需要index,也可以写成for(item in list)
  2. System.out.println(index + ":" + item);
  3. }
  4. /*
  5. 结果:
  6. 0:1
  7. 1:2
  8. 2:3
  9. */
 
时间处理
 
  1. import java.time.LocalDateTime;
  2. import java.time.temporal.ChronoUnit;
  3. import java.time.format.DateTimeFormatter;
  4.  
  5. var formatStr = "yyyy-MM-dd HH:mm:ss";
  6. var format = DateTimeFormatter.ofPattern(formatStr);
  7.  
  8. // 获取指定日期 7 天之前的时间对象
  9. var currentTime = LocalDateTime.now();
  10. var nDaysAgoTime = currentTime.minus(7, ChronoUnit.DAYS);
  11.  
  12. // "2024-12-02 17:25:36" 字符串 转时间对象
  13. var dateTimeStr = "2024-12-02 17:25:36";
  14. var dateTimeObj = LocalDateTime.parse(dateTimeStr, format);
  15.  
  16. return {
  17. "now": currentTime.format(format),
  18. "origin": nDaysAgoTime.format(format),
  19. "date: ": dateTimeObj.format(format)
  20. }
 
 
  1. // 定义一个 Person 对象
  2. const NewPerson = () => {
  3. Object Person = {
  4. name: "Alice", // 属性
  5. age: 30, // 属性e1
  6.  
  7. // 使用箭头函数来定义方法
  8. greet: () => {
  9. return "Hello, " + Person.name + ": " + Person.age;
  10. },
  11.  
  12. // 修改属性的方法
  13. setName: (newName) => {
  14. Person.name = newName;
  15. },
  16.  
  17. setAge: (newAge) => {
  18. Person.age = newAge;
  19. }
  20. }
  21.  
  22. return Person;
  23. }
  24.  
  25. var ps = NewPerson();
  26. ps.setName("李白");
  27. ps.setAge(1000);
  28.  
  29. // 调用方法
  30. return ps.greet(); // 输出:Hello, 李白 :1000
 

四、Redis插件

引入依赖

 
  1. <dependency>
  2. <groupId>org.ssssssss</groupId>
  3. <artifactId>magic-api-plugin-redis</artifactId>
  4. <version>2.1.1</version>
  5. </dependency>
 

配置

 
  1. # 以下配置均可省略
  2. magic-api:
  3. # 将接口信息存入到Redis中
  4. resource:
  5. type: redis # 存储方式改为redis
  6. prefix: magic-api # 前缀
  7. readonly: false #是否为只读模式
  8. # 配置Redis
  9. spring:
  10. redis:
  11. host: 192.168.1.29
  12. port: 6379
  13. database: 4
  14. password: 123456
  15.  
 

使用

 
  1. import redis; //导入redis模块
  2. var value = 'hello';
  3. //通过redis.命令名(命令参数,命令参数,.....,命令参数) 进行调用,其中命令名不区分大小写
  4. redis.set('key',value); //调用set命令
  5. redis.setex('key',10,value); //调用setex命令
  6. return redis.get('key'); //调用get命令
 

五、ElasticSearch插件

引入依赖

 
  1. <dependency>
  2. <groupId>org.ssssssss</groupId>
  3. <artifactId>magic-api-plugin-elasticsearch</artifactId>
  4. <version>2.1.1</version>
  5. </dependency>
 

配置

 
  1. # 配置ElasticSearch
  2. spring:
  3. elasticsearch:
  4. rest:
  5. uris: http://127.0.0.1:9200
  6. username: elastic
  7. password: 123456789
  8.  
 

使用

 
  1. import elasticsearch; //导入redis模块
  2. // 根据_id保存,当存在时更新,不存在时插入
  3. elasticsearch.index('index名称').save(_id, data);
  4. // 不指定_id插入
  5. elasticsearch.index('index名称').insert(data);
  6. // 指定_id插入,当_id存在时不会更新
  7. elasticsearch.index('index名称').insert(_id, data);
  8. // 根据_id删除
  9. elasticsearch.index('index名称').delete(_id);
  10. // 批量保存,当包含id时,则使用该列值匹配保存
  11. elasticsearch.index('index名称').bulkSave(list);
  12. // 根据_id修改
  13. elasticsearch.index('index名称').delete(_id, data);
  14. // 根据`DSL`语句搜索
  15. elasticsearch.index('index名称').search(dsl);
  16.  
  17. elasticsearch.rest('url')
  18.  
  19. .parameter(key, value) // 添加请求参数
  20. .parameters(map) // 批量添加参数
  21.  
  22. .put(data) // 执行put方法
  23. .delete() // 执行delete方法,不带请求体
  24. .delete(data) // 执行delete方法,带请求体
  25. .post(data) // 执行post方法,带请求体
  26. .get() // 执行get方法
 

六、定时任务插件

引入依赖

 
  1. <dependency>
  2. <groupId>org.ssssssss</groupId>
  3. <artifactId>magic-api-plugin-task</artifactId>
  4. <version>2.1.1</version>
  5. </dependency>
 

#配置

 
  1. # 以下配置均可省略
  2. magic-api:
  3. task:
  4. thread-name-prefix: magic-task- #线程池名字前缀
  5. pool:
  6. size: 8 #线程池大小,默认值为CPU核心数
  7. shutdown:
  8. awaitTermination: false #关闭时是否等待任务执行完毕,默认为false
  9. awaitTerminationPeriod: 10s # 关闭时最多等待任务执行完毕的时间
 

#使用

在引入插件之后,重启项目,页面左侧就能看到对应的定时任务了,新建之后,填入cron表达式,名字,脚本信息即可。

[纯干货] Magic-API开发指南——新一代后端开发神器-CSDN博客

 

posted @ 2025-03-31 14:45  CharyGao  阅读(1628)  评论(0)    收藏  举报