Magic-api Java接口快速开发框架

1 简介

magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发

2 特性

  • 支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQLServer 等支持jdbc规范的数据库
  • 支持非关系型数据库Redis、Mongodb
  • 支持集群部署、接口自动同步。
  • 支持分页查询以及自定义分页查询
  • 支持多数据源配置,支持在线配置数据源
  • 支持SQL缓存,以及自定义SQL缓存
  • 支持自定义JSON结果、自定义分页结果
  • 支持对接口权限配置、拦截器等功能
  • 支持运行时动态修改数据源
  • 支持Swagger接口文档生成
  • 基于magic-script脚本引擎,动态编译,无需重启,实时发布
  • 支持Linq式查询,关联、转换更简单
  • 支持数据库事务、SQL支持拼接,占位符,判断等语法
  • 支持文件上传、下载、输出图片
  • 支持脚本历史版本对比与恢复
  • 支持脚本代码自动提示、参数提示、悬浮提示、错误提示
  • 支持导入Spring中的Bean、Java中的类
  • 支持在线调试
  • 支持自定义工具类、自定义模块包、自定义类型扩展、自定义方言、自定义列名转换等自定义操作

3 快速开始

  1. 引入依赖包

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <!-- 父包 -->
    <parent>
    <artifactId>spring-boot-dependencies</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>2.3.5.RELEASE</version>
    </parent>

    <dependencies>
    <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.25</version>
    </dependency>
    <!-- magic-api依赖包 -->
    <dependency>
    <groupId>org.ssssssss</groupId>
    <artifactId>magic-api-spring-boot-starter</artifactId>
    <version>2.0.2</version>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.1</version>
    </dependency>
    </dependencies>
  2. 修改application.yaml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    server:
    port: 8080
    # 配置静态资源启用 gzip 压缩
    compression:
    enabled: true
    min-response-size: 128

    #配置magic-api
    magic-api:
    web: /magic/web
    #配置文件存储位置,当以classpath开头时,为只读模式
    resource:
    #location: /data/magic-api
    type: database # 配置接口存储方式,这里选择存在数据库中
    table-name: magic_api_file # 数据库中的表名
    prefix: /magic-api # 前缀
    # 其它配置请参考 https://ssssssss.org/magic-api/config/
  3. 创建数据库以及数据表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    -- api接口表
    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 test_magic_api (
    `id` int NOT NULL AUTO_INCREMENT,
    `name` varchar(100) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  4. 启动程序

  5. 访问接口配置平台

    1
    http://127.0.0.1:8080/magic/web/index.html

    弹出一个类似与IDEA的页面,如下图所示:

4 配置Magic-api

  1. 创建分组

  2. 创建接口

    • 查询列表命令为:

      1
      2
      3
      4
      var sql = """
      select * from magic_api_file; // magic_api_file为数据库表
      """
      return db.select(sql);


    • 单表保存命令

      1
      2
      3
      4
      5
      6
      return db.table('test_magic_api')   //表test_magic_api有两个字段, id 自增, name
      .primary('id')
      .save({
      id, // 当file_path不为null时做修改,否则做插入
      name: name
      })

    • 分页查询命令

      1
      2
      3
      4
      var sql = """
      select file_path from magic_api_file
      """
      return db.page(sql,5,0) //每页5条,从第0开始

  3. 执行查询接口,结果如下图所示

这样一个简单的模拟查询数据库表记录的接口就完成了,省去了后台写的大量的测试代码,大大的节省了时间用来摸鱼。

具体需要查看更多关于magic-api的相关内容,可以查看 magic-api源码 以及 样例代码以及常用的脚本