一个 Java 接口快速开发框架:magic-api
一、简介
magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口。无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发。
已有上千家中小型公司使用,上万名开发者用于接口配置开发,gitee积累3.1k星,gitee地址如下:https://gitee.com/ssssssss-team/magic-api。我在近日接触到的一个项目中,就使用了magic-api框架,使用过后我发现magic-api框架有以下几个特点:
1.使用场景:后端人员进行HTTP API接口开发,支持多数据源切换,自带接口测试功能可加速开发过程。
2.使用难易:对于后台开发人员来说,添加一个依赖就可以使用,轻量级。
3.开发成本:支持脚本代码自动提示、参数提示、悬浮提示、错误提示。由类java语法 + sql语法组成,无需对里面自带的语法进行学习。
4.发布成本:支持脚本历史版本对比与恢复,基于magic-script脚本引擎,动态编译,无需重启,实时发布。
二、快速开始
我们将通过一个简单的demo来阐述magic-api的功能。
1.初始化工程
创建一个空的Spring Boot工程, 以mysql作为默认数据库。
2.添加依赖
引入Spring Boot Starter父工程
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>undefined</version>
<relativePath/>
</parent>
引入magic-api-spring-boot-starter依赖
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-spring-boot-starter</artifactId>
<version>2.0.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: test
4.访问api管理界面
启动项目之后,访问http://localhost:9999/magic/web 即可看到web页面
三、写接口代码
1. 创建分组
点击创建分组按钮后,输入分组信息,点击创建。

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

在编辑器输入内容后,填写接口名称和及其路径。
var sql = """
select * from test_data"""
return db.select(sql)

ctrl+s保存后,即可访问接口。
3.访问接口
> curl http://localhost:9999/test/test
{
"code": 1,
"message": "success",
"data": [
{
"id": 1,
"name": "magicApi"
},
{
"id": 2,
"name": "xiaoDong"
}
],
"timestamp": 1638192442535,
"executeTime": 9}
也可以通过web界面执行。

四、小结
通过以上几个步骤,我们就实现了一个简单的查询功能。省去了Controller、Service、Dao、Mapper、XML、VO等模板代码的工作量。如果你也有接口快速发开,小型项目快速搭建的需求,不妨试试magic-api框架吧!
一个 Java 接口快速开发框架:magic-api的更多相关文章
- 如何让一个Java新手快速入门?
问题中问到如何让java新生快速入门,既然想快速入门的话那最简单粗暴的方法就是多看视频,加上跟着视频敲代码,刚开始可能不知道是什么意思,敲得多了就慢慢知道是什么意思了. 刚开始建议在网上找那种结合自己 ...
- 肝了一个半月的 Java 项目快速开发脚手架:Chewing
前言 闲来无事,整一个 Java 项目快速开发脚手架. 正文 一.简介 Chewing 是一个简单的 Java 项目快速开发脚手架.既适合需要开发小型项目的小伙伴使用,也适合刚入门的新手用来学习一些常 ...
- java 接口和抽象类的一个最大的区别
写在前面,下面是在百度百科上看到的,之前就看过,这次再看感觉有更深的体会,真的是这样,每一个脚印都会留下痕迹 java接口和java抽象类有太多相似的地方,又有太多特别的地方,这里说下两者之间的一个最 ...
- .NET Core开源快速开发框架Colder发布 (NET Core2.1+AdminLTE版)
引言 上星期发布的.NET452+AdminLTE版框架得到了大家的大力支持,目前GitHub已获近100星,鄙人十分高兴能够帮助大家.其中有不少关心.NET Core的支持情况,因为未来的.NET平 ...
- .NET开源快速开发框架Colder发布 (NET452+AdminLTE版)
.NET开源快速开发框架Colder(NET452+AdminLTE版) 引言 半年前将基于Easyui的快速开发框架开源,三个版本(NET4.52,NETCore和NET4.0)总共荣获200+星, ...
- Web后台快速开发框架(.NET Core)
Web后台快速开发框架(.NET Core) Coldairarrow 目录 目录 第1章 目录 1 第2章 简介 3 第3章 基础准备 4 3.1 开发环境 ...
- Web后台快速开发框架
Web后台快速开发框架 Coldairarrow 目录 目录 第1章 目录 1 第2章 简介 3 第3章 基础准备 4 3.1 开发环境要求 4 3.2 ...
- 【转载】.NET开源快速开发框架Colder(NET452+AdminLTE版)
.NET开源快速开发框架Colder(NET452+AdminLTE版) 简介 本框架旨在为.NET开发人员提供一个Web后台快速开发框架,采用本框架,能够极大的提高项目开发效率. 本版本框架采后端采 ...
- .NET 跨平台RPC框架DotNettyRPC Web后台快速开发框架(.NET Core) EasyWcf------无需配置,无需引用,动态绑定,轻松使用 C# .NET 0配置使用Wcf(半成品) C# .NET Socket 简单实用框架 C# .NET 0命令行安装Windows服务程序
.NET 跨平台RPC框架DotNettyRPC DotNettyRPC 1.简介 DotNettyRPC是一个基于DotNetty的跨平台RPC框架,支持.NET45以及.NET Standar ...
- Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6642463 在前面几篇文章中,我们详细介绍了A ...
随机推荐
- Python从0到1丨了解图像形态学运算中腐蚀和膨胀
摘要:这篇文章将详细讲解图像形态学知识,主要介绍图像腐蚀处理和膨胀处理. 本文分享自华为云社区<[Python从零到壹] 四十七.图像增强及运算篇之腐蚀和膨胀详解>,作者: eastmou ...
- bootstrap treeview基本运用
虽然现在有了很多新的前端框架,但是有的时候我们做一个不需要任何其他js编译环境就可以运行的项目,那还是的使用一些老式技术,接下来就来回顾一些bootstrap treeview + jquery的使用 ...
- SQL注入三连实战绕过WTS-WAF
一键三连,sql注入 一次无意之间发现的sql注入,主要是因为有一个WTS-WAF,在此记录一下 只是友好测试,并非有意为之.... 牛刀小试1 手注 判断字段数 测试到order by 15的时候出 ...
- 驱动开发:内核ShellCode线程注入
还记得<驱动开发:内核LoadLibrary实现DLL注入>中所使用的注入技术吗,我们通过RtlCreateUserThread函数调用实现了注入DLL到应用层并执行,本章将继续探索一个简 ...
- 如何在 Memcache 与 Redis 中做选择?
memcache vs redis Memcached和Redis都是流行的内存缓存系统,用于提高应用程序的性能和响应速度.它们有一些相似之处,但也有一些区别.以下是Memcached和Redis之间 ...
- 搭建私人GPT及域名配置
前几天在掘金看到一个搭建私人ChatGPT的教程,看起来并不难. 我也有OpenAI的API Key,然后前阵子我看到我的账号余额还有很多,我的api key其实就一个机器人在用,没用多少. 还有,就 ...
- CF1810G The Maximum Prefix
经典套路. 题意 你将随机生成一个长度为 \(k\) 的数组 \(a\),其中 \(a_i\) 有 \(p_i\) 概率为 \(1\),否则为 \(-1\).定义其前缀和数组 \(s_i = \sum ...
- Ryu控制器教程
RYU不要使用apt的方法安装,这样的安装是不完整的, 并且相关文件不易查找. 1.下载ryu源码 cd cd Desktop git clone https://gitee.com/lpm-123/ ...
- Codeforces Round #877 (Div. 2) A-E
A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; bool solve() { int n; ...
- WAMP apache 无法运行 报错could not execult menu item
wamp:could not execult menu item (internal error)[exception]counld not perform service action:服务器没有及 ...