Magic-API开发指南

Hello!欢迎各位新老朋友来看小弟博客,祝大家事业顺利,财源广进!!

主题: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,结构如下
在这里插入图片描述
1、初始化工程

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

2、添加依赖
作为演示demo,直接无脑复制粘贴即可

引入Spring Boot Starter父工程:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.4.0</version>
    <relativePath/>
</parent>

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

<dependency>
    <groupId>org.ssssssss</groupId>
    <artifactId>magic-api-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>

引入spring-boot-starter,spring-boot-starter-web, spring-boot-starter-test, mysql依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.27</version>
</dependency>

3、配置application.yml文件

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

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

在这里插入图片描述
5、一分钟写出Demo接口

在这里插入图片描述
右键分组,点击新建接口。

在这里插入图片描述

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

var sql = """
select * from test_data
"""
 
return db.select(sql)

在这里插入图片描述

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

在这里插入图片描述

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

第三:进阶用法

发送HTTP POST请求并拿数据

var url = "http://123.123.123:8880/test";
var data = {
    "name":"xiaoqian"
}
var rows = http.connect(url).header({"Content-Type": "application/json"}).body(data).post().getBody();

获取请求内容

http://localhost:9999/xxx/xxx
name=abc&age=49
 
#这样的表单参数magic-api 也会自动将name和age映射为同名变量。
{
  "name": "magic-api",
  "version": "9.9.9"
}
 
#如要获取name属性 则可通过 body.name 来获取

定义函数

const test = ( test ) => {
        test=1return test;
}

for循环

for(index,item in list){    //如果不需要index,也可以写成for(item in list)
    System.out.println(index + ":" + item);
}
/*
结果:
0:1
1:2
2:3
*/

时间处理

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.time.format.DateTimeFormatter;
 
var formatStr = "yyyy-MM-dd HH:mm:ss";
var format = DateTimeFormatter.ofPattern(formatStr);
 
// 获取指定日期 7 天之前的时间对象
var currentTime = LocalDateTime.now();
var nDaysAgoTime = currentTime.minus(7, ChronoUnit.DAYS);
 
// "2024-12-02 17:25:36" 字符串 转时间对象 
var dateTimeStr = "2024-12-02 17:25:36";
var dateTimeObj = LocalDateTime.parse(dateTimeStr, format);
 
return {
    "now": currentTime.format(format),
    "origin": nDaysAgoTime.format(format),
    "date: ": dateTimeObj.format(format)
}

// 定义一个 Person 对象
const NewPerson = () => {
    Object Person = {
        name: "Alice",  // 属性
        age: 30,        // 属性e1
 
        // 使用箭头函数来定义方法
        greet: () => {
            return "Hello, " + Person.name + ": " + Person.age;
        },
 
        // 修改属性的方法
        setName: (newName) => {
            Person.name = newName;
        },
 
        setAge: (newAge) => {
            Person.age = newAge;
        }
    }
 
    return Person;
}
 
var ps = NewPerson();
ps.setName("李白");
ps.setAge(1000);
 
// 调用方法
return ps.greet();  // 输出:Hello, 李白 :1000

四、Redis插件

引入依赖

<dependency>
    <groupId>org.ssssssss</groupId>
    <artifactId>magic-api-plugin-redis</artifactId>
    <version>2.1.1</version>
</dependency>

配置

# 以下配置均可省略
magic-api:
    # 将接口信息存入到Redis中
    resource:
        type: redis # 存储方式改为redis
        prefix: magic-api   # 前缀
        readonly: false #是否为只读模式
# 配置Redis
spring:
    redis:
        host: 192.168.1.29
        port: 6379
        database: 4
        password: 123456
 

使用

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

五、ElasticSearch插件

引入依赖

<dependency>
    <groupId>org.ssssssss</groupId>
    <artifactId>magic-api-plugin-elasticsearch</artifactId>
    <version>2.1.1</version>
</dependency>

配置

# 配置ElasticSearch
spring:
    elasticsearch:
        rest:
            uris: http://127.0.0.1:9200
            username: elastic
            password: 123456789
 

使用

import elasticsearch;   //导入redis模块
// 根据_id保存,当存在时更新,不存在时插入
elasticsearch.index('index名称').save(_id, data);
// 不指定_id插入
elasticsearch.index('index名称').insert(data);
// 指定_id插入,当_id存在时不会更新
elasticsearch.index('index名称').insert(_id, data);
// 根据_id删除
elasticsearch.index('index名称').delete(_id);
// 批量保存,当包含id时,则使用该列值匹配保存
elasticsearch.index('index名称').bulkSave(list);
// 根据_id修改
elasticsearch.index('index名称').delete(_id, data);
// 根据`DSL`语句搜索
elasticsearch.index('index名称').search(dsl);
 
elasticsearch.rest('url')
 
    .parameter(key, value)  // 添加请求参数
    .parameters(map) // 批量添加参数
    
    .put(data)  // 执行put方法
    .delete()   // 执行delete方法,不带请求体
    .delete(data)   // 执行delete方法,带请求体
    .post(data) // 执行post方法,带请求体
    .get()  // 执行get方法

六、定时任务插件

引入依赖

<dependency>
    <groupId>org.ssssssss</groupId>
    <artifactId>magic-api-plugin-task</artifactId>
    <version>2.1.1</version>
</dependency>

配置

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

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

七、动态参数

演示
在这里插入图片描述

在这里插入图片描述
请求参数获取

RequestParam

GET http://localhost:9999/xxx/xxx?name=abc&age=49
这样的URL参数magic-api 会自动将name和age映射为同名变量。

表单参数

POST http://localhost:9999/xxx/xxx
name=abc&age=49
这样的表单参数magic-api 也会自动将name和age映射为同名变量。

Header参数获取

magic-api 会对所有RequestHeader统一封装为一个名为header的变量 如要获取 token 可以通过header.token 来获取

Request Body参数获取
对于RequestBody magic-api会将整个请求体映射为body变量,如:

{
  "name": "magic-api",
  "version": "9.9.9"
}

如要获取name属性 则可通过 body.name 来获取

如果提交的body为数组或者List, body为数组, 如需遍历,参考脚本语法

Path参数获取

主要是针对URL定义为http://localhost:9999/user/{id} 的类似接口

如要获取path路径上的id可通过path.id 或 id来获取。

对于请求时使用了http://localhost:9999/user/1?id=2的请求, id变量的值将是RequestParam中的值,此时可以通过path.id 来避免冲突。

八、参考资料

https://www.cnblogs.com/zys2019/p/14842918.html#_label5
https://www.ssssssss.org/
https://gitee.com/dove_usst/magic-api-example.git

好了,朋友们,点点关注不迷路,喜欢的朋友们还请留下您的小赞赞,小弟会更加努力更新!!如果感兴趣的话,欢迎关注小弟公众号 【科技脉搏】!!!🥳🥳🥳

<think>好的,我现在需要处理用户关于Magic-API的查询。用户希望了解Magic-API的文档和使用教程,而提供的引用内容中提到了整合Git插件、环境配置以及项目搭建和导入文件的相关信息。首先,我应该整理这些引用内容中的关键点,并按照用户的要求结构化回答。 首先,引用[2]提到了官方文档的链接,这是必须放在最前面的,方便用户直接访问。然后,用户可能需要的入门教程,引用[2]和[3]都涉及到环境配置和项目搭建,需要分步骤说明。接下来,关于Git插件的整合,引用[1]详细说明了生成RSA密钥的过程,这部分需要详细展开,因为用户可能遇到PG数据库的兼容问题,而Git备份是一个解决方案。此外,用户可能还会遇到常见问题,比如导入zip文件,引用[3]提到导入按钮的位置需要强调。 接下来,生成相关问题时要考虑用户可能的后续需求,比如配置问题、数据备份、接口调试和安全性等。这些问题需要覆盖Magic-API的不同使用场景和潜在难点,帮助用户全面了解。 需要确保回答符合系统级指令,特别是使用正确的中文和LaTeX格式,但看起来当前内容中不需要数学公式,所以可能不需要处理这部分。另外,引用标识要自然地添加在相关段落末尾,检查每个引用是否准确对应。 最后,整体结构要清晰,分点说明,步骤详细,确保用户能够一步步跟随操作。同时,语言要简洁明了,避免技术术语过多,方便不同层次的用户理解。检查是否有遗漏的引用或信息,确保所有引用的内容都被合理利用。确认所有链接和命令正确无误,特别是SSH密钥生成命令和官方文档链接。完成这些后,回答应该能满足用户的需求,并引导他们进一步探索Magic-API的使用。</think>### Magic-API 使用指南 Magic-API 是一个基于Java的接口快速开发框架,支持通过可视化配置生成API。以下是其核心使用文档和教程整理: #### 1. 官方文档与基础配置 - **官方文档**:Magic-API 的完整文档可访问 [https://www.ssssssss.org/magic-api](https://www.ssssssss.org/magic-api),包含环境配置、API编写规范等基础内容[^2]。 - **环境搭建**(SpringBoot集成): ```xml <!-- pom.xml 添加依赖 --> <dependency> <groupId>org.ssssssss</groupId> <artifactId>magic-api-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> ``` 配置 `application.yml` 文件启用Magic-API控制台。 #### 2. 项目文件导入 - **导入ZIP文件**:在Magic-API控制台界面中,通过右上角的 **「导入」** 按钮上传ZIP格式的接口文件包[^3]。 - **文件结构要求**:ZIP包需包含完整的接口定义文件(如 `.json` 或 `.dsl` 文件)。 #### 3. Git插件整合(解决PG兼容问题) - **生成RSA密钥**: ```bash ssh-keygen -t rsa -b 2048 -m PEM # 生成密钥对用于Git仓库鉴权[^1] ``` - **配置Git备份**: 在Magic-API管理界面中配置Git仓库地址、分支及密钥路径,实现接口版本控制。 #### 4. 常见问题 - **历史记录查看**:默认PG数据库可能无法显示接口历史,建议优先使用Git备份功能。 - **接口调试**:通过控制台的 **「在线调试」** 模块可直接测试接口,支持参数动态注入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值