magic-api
接口快速开发框架
基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发 。
magic-page-designer
在线页面快速开发平台
基于 vue 的在线页面快速开发平台,主要把所有的 vue 代码都改为在线配置,最终获得一个 json 格式的页面
spider-flow
新一代爬虫平台
基于Java实现的新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。
今天给大家安利一款非常优秀的低代码平台,可以实现接口的动态配置发布,不需要编写代码。
magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发。
上边是官方定义,简单来说就是之前我们开发一个接口,至少需要Controller,Service,Dao,Mapper文件,还需要各种配置,搭建启动springboot项目,发布完成,接口才能访问,接口才算完成。
而magic要做的就是通过UI界面动态的配置一下接口路径,出入参,点击保存,接口发布完成,即可访问,不需要编写代码,只需要简单配置,还支持事物,分页,http请求等数据库操作,有点类似于现在的低代码平台,对于一些非核心的字典呀等静态数据使用还是非常方便的,一款非常优秀的低代码框架,可以快速接口开发。
官网地址:
https://www.ssssssss.org/
文档地址:
https://www.ssssssss.org/magic-api/
演示地址:
https://magic-api.ssssssss.org/
支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQLServer 等支持jdbc规范的数据库
支持非关系型数据库Redis、Mongodb
支持集群部署、接口自动同步。
支持分页查询以及自定义分页查询
支持多数据源配置,支持在线配置数据源
支持SQL缓存,以及自定义SQL缓存
支持自定义JSON结果、自定义分页结果
支持对接口权限配置、拦截器等功能
支持运行时动态修改数据源
支持Swagger接口文档生成
基于magic-script脚本引擎,动态编译,无需重启,实时发布
支持Linq式查询,关联、转换更简单
支持数据库事务、SQL支持拼接,占位符,判断等语法
支持文件上传、下载、输出图片
支持脚本历史版本对比与恢复
支持脚本代码自动提示、参数提示、悬浮提示、错误提示
支持导入Spring中的Bean、Java中的类
支持在线调试
支持自定义工具类、自定义模块包、自定义类型扩展、自定义方言、自定义列名转换等自定义操作
CREATE TABLE `magic_api_file` (
`file_path` varchar(512) NOT NULL,
`file_content` mediumtext,
PRIMARY KEY (`file_path`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
CREATE TABLE `magic_api_backup` (
`id` varchar(32) NOT NULL COMMENT '原对象ID',
`create_date` bigint(13) NOT NULL COMMENT '备份时间',
`tag` varchar(32) DEFAULT NULL COMMENT '标签',
`type` varchar(32) DEFAULT NULL COMMENT '类型',
`name` varchar(64) DEFAULT NULL COMMENT '原名称',
`content` mediumtext COMMENT '备份内容',
`create_by` varchar(64) DEFAULT NULL COMMENT '操作人',
PRIMARY KEY (`id`,`create_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
select * from magic_api_info;
CREATE TABLE `magic_api_info` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID主键',
`name` varchar(64) DEFAULT NULL COMMENT 'magic名称',
`address` varchar(64) DEFAULT NULL COMMENT 'api地址',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='魔术api';
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (14, '鉴权API', '/auth/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (15, '用户API', '/user/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (16, '商品API', '/goods/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (17, '类目API', '/category/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (18, '订单API', '/order/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (19, '活动API-NEW', '/activity/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (20, '营销API', '/marking/**');
<dependencies>
<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.ssssssss</groupId>
<artifactId>magic-api-spring-boot-starter</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
server:
port: 9999
compression:
enabled: true
min-response-size: 128
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
datasource:
url: jdbc:mysql://localhost:3306/magic?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
logging:
level:
org:
springframework:
jdbc:
core:
JdbcTemplate: DEBUG
StatementCreatorUtils: TRACE
magic-api:
web: /magic/web
resource:
type: database
table-name: magic_api_file
prefix: /magic-api
security-config:
username: admin
password: 123456
response-code-config:
success: 200
invalid: 400
exception: 500
swagger-config:
version: 1.0
description: MagicAPI 接口信息
title: MagicAPI Swagger Docs
name: MagicAPI 接口
location: /v2/api-docs/magic-api/swagger2.json
MagicApiApplication
package com.zrj.magic;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
* magic-api
* @author zrj
* @since 20210910
@EnableSwagger2
@SpringBootApplication
public class MagicApiApplication {
public static void main(String[] args) {
SpringApplication.run(MagicApiApplication.class, args);
其他剩下的都是一些定制化的配置类。详见magic-api-simple。
gitee地址:https://gitee.com/ssssssss-team/magic-api-example
magic-api 配置类MagicAPIConfiguration
package com.zrj.magic.configuration;
import com.zrj.magic.interceptor.CustomRequestInterceptor;
import com.zrj.magic.interceptor.CustomUIAuthorizationInterceptor;
import com.zrj.magic.provider.*;
import com.zrj.magic.scripts.CustomFunction;
import com.zrj.magic.scripts.CustomFunctionExtension;
import com.zrj.magic.scripts.CustomModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.ssssssss.magicapi.adapter.Resource;
import org.ssssssss.magicapi.config.MagicDynamicDataSource;
import org.ssssssss.magicapi.provider.GroupServiceProvider;
import org.ssssssss.magicapi.provider.PageProvider;
import javax.sql.DataSource;
* magic-api 配置类
* 以下只配置了多数据源
* 其它如果有需要可以自行放开 // @Bean 注释查看效果
@Configuration
public class MagicAPIConfiguration {
* 配置多数据源
* @see MagicDynamicDataSource
@Bean
public MagicDynamicDataSource magicDynamicDataSource(DataSource dataSource) {
MagicDynamicDataSource dynamicDataSource = new MagicDynamicDataSource();
dynamicDataSource.setDefault(dataSource);
dynamicDataSource.add("slave", dataSource);
return dynamicDataSource;
* 配置自定义JSON结果
public CustomJsonValueProvider customJsonValueProvider() {
return new CustomJsonValueProvider();
* 配置分页获取方式
public PageProvider pageProvider() {
return new CustomPageProvider();
* 自定义UI界面鉴权
public CustomUIAuthorizationInterceptor customUIAuthorizationInterceptor() {
return new CustomUIAuthorizationInterceptor();
* 自定义请求拦截器(鉴权)
public CustomRequestInterceptor customRequestInterceptor() {
return new CustomRequestInterceptor();
* 自定义SQL缓存
public CustomSqlCache customSqlCache() {
return new CustomSqlCache();
* 自定义函数
public CustomFunction customFunction() {
return new CustomFunction();
* 自定义方法扩展
public CustomFunctionExtension customFunctionExtension() {
return new CustomFunctionExtension();
* 自定义模块
public CustomModule customModule() {
return new CustomModule();
* 自定义脚本语言
public CustomLanguageProvider customLanguageProvider() {
return new CustomLanguageProvider();
* 自定义列名转换
public CustomMapperProvider customMapperProvider() {
return new CustomMapperProvider();
* 自定义接口脚本加解密
public CustomApiServiceProvider customApiServiceProvider(Resource resource, GroupServiceProvider groupServiceProvider) {
return new CustomApiServiceProvider(resource, groupServiceProvider);
访问地址:http://localhost:9999/magic/web/index.html
启动控制台输出
********************************************当前服务相关地址********************************************
服务启动成功,magic-api已内置启动! Access URLs:
接口本地地址: http://localhost:9999/
接口外部访问地址: http://10.255.1.46:9999/
接口配置平台: http://10.255.1.46:9999/magic/web/index.html
可通过配置关闭输出: magic-api.show-url=false
********************************************当前服务相关地址********************************************
swagger地址:http://localhost:9999/swagger-ui.html#/
这个需要注解@EnableSwagger2,否则找不到。
Java接口配置框架magic-api1. magic三大框架2. magic-api概述2.2 magic-api简介2.2 magic-api特点3. magic-api框架搭建3.1 创建数据库3.2 创建springboot项目3.3 引入依赖3.4 application.yml配置3.5 启动类3.6 其他自定义类4. magic实现验证4.1 magic ui4.2 swagger1. magic三大框架magic-api接口快速开发框架基于Java的接口快速开发框架,编写接口将通过m
对于数据开发人员来说,把数据通过api的方式提供出去,往往是数据开发的最后一公里。对于一个数据开发人员来说,通过自己写java或者其他代码提供数据服务往往比较困难,但是写SQL对他们来说是so easy,所以需要有一个工具通过SQL的方式快速提供API。搜索几方,发现已经有比较成熟的开源方案。
一、相关开源产品
Datawayhttps://www.hasor.net/doc/display/dataway
Magic-APIssssssss-team
Rocket-API-Platfo..
DDD领域驱动设计详解
晓峰一梦: