magic-api简介

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

在SpringBoot中使用

1、添加magic-api相关依赖

<!--接口快速开发框架 magic-api-->
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</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>

2、配置application.yml

server:
port: 8080
# spring配置
spring:
# 数据源配置
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/magic_api?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
# magic配置
magic-api:
# 配置api管理页面入口
web: /magic/web
# 配置存储方式
resource:
# 配置接口资源存储方式,默认file,可选database、redis
type: file
# 配置接口资源存储位置
location: D:/data/magic-api
# 启用驼峰命名转换
sql-column-case: camel

3、在MySQL中创建数据库magic_api

4、启动项目,访问api管理界面

访问地址:http://localhost:8080/magic/web

编写接口代码

新增接口

先创建一个分组,然后在分组中创建一个新增接口,在编辑框中输入如下脚本:

// 使用body对象可以直接获取请求body中的参数
return db.table('pms_brand').insert(body);

在底部的接口信息中进行如下配置,POST请求,请求路径为/create,请求参数放在请求body中;

根据ID查询接口

在编辑框中输入如下脚本:

// 路径变量从path对象中获取
return db.table('pms_brand')
    .where()
    .eq('id',path.id)
    .selectOne();

在底部的接口信息中进行如下配置,GET请求,请求路径为/detail/{id},请求参数放在路径变量中;

修改接口

在编辑框中输入如下脚本:

return db.table('pms_brand').primary('id',body.id).update(body);

在底部的接口信息中进行如下配置,POST请求,请求路径为/update,请求参数放在请求body中;

分页查询接口

在编辑框中输入如下脚本:

return db.table('pms_brand').page();

在底部的接口信息中进行如下配置,GET请求,请求路径为/page,请求参数放在请求参数中(由于已经在application.yml中配置好了分页参数,可直接使用):

根据ID删除接口

在编辑框中输入如下脚本,删除只能使用update

return db.update('delete from pms_brand where id=#{id}');

在底部的接口信息中进行如下配置,POST请求,请求路径为/delete/{id},请求参数放在路径变量中;

参数验证

可以通过断言模块assert来进行参数验证,如下:

import assert;  //导入断言模块
//验证不通过时,会终止运行
assert.notEmpty(body.name,400,'名称不能为空!');
assert.notEmpty(body.firstLetter,400,'首字母不能为空!');
return db.table('pms_brand').insert(body);

自定义状态码

结果转换

比如我们想将showStatus转换为中文说明,并只返回三个需要的字段,在编辑框中输入如下脚本:

var list = db.table('pms_brand').select();
return list.map((item)=>{
    name : item.name,
    firstLetter : item.firstLetter,
    showStatus : item.showStatus? '不显示' : '显示'
});

访问该接口,在执行结果中可以发现,返回结果已经转换。

使用事务

magic-api也是支持事务的。使用db.transaction()方法即可,支持自动事务和手动事务。

还是以修改信息为例,先查询是否存在,如果存在则更新:

import assert; 
var val = db.transaction(()=>{
    var exist = db.table('pms_brand').where().eq('id',body.id).selectOne();
    assert.notNull(exist,404,'找不到该记录!');
    db.table('pms_brand').primary('id',body.id).update(body);
    return v2;
});
return val;

集成Swagger

先在pom.xml中添加Swagger相关依赖:省略~

再在配置文件application.yml中添加Swagger相关配置:

magic-api:
  # 集成Swagger配置
  swagger-config:
    # 文档名称
    name: MagicAPI 测试接口
    # 文档标题
    title: MagicAPI Swagger Docs
    # 文档描述
    description: MagicAPI 测试接口信息
    # 文档版本号
    version: 1.0
    # 文档资源位置
    location: /v2/api-docs/magic-api/swagger2.json

Magic-API的特性

  • 简化开发流程:无需定义Controller、Service、Dao、Mapper、XML等Java对象:通过magic-api提供的UI界面即可完成接口编写,自动映射为HTTP接口。
  • 动态编译:基于magic-script脚本引擎,无需重启,实时发布。
  • 支持多数据源配置:支持运行时动态添加数据源。
  • 支持多种数据库:支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQLServer等支持jdbc规范的数据库。
  • 支持SQL缓存:以及自定义SQL缓存。
  • 支持自定义JSON结果、自定义分页结果。
  • 支持自定义工具类、自定义模块包、自定义类型扩展、自定义函数等。
  • 支持对接口权限配置、拦截器等功能。
  • 支持导入Spring中的Bean、Java中的类。
  • 支持Swagger接口文档生成。

Magic-API的弊端

  • 无法处理复杂业务逻辑:Magic-API主要适用于简单的HTTP接口开发,对于复杂的业务逻辑,需要结合其他框架或手动编写代码实现。
  • 无法处理大型项目:Magic-API适用于小型项目的快速开发,对于大型项目,需要考虑更多的因素,如模块化、可扩展性、性能等,此时Magic-API可能无法满足需求。

参考资料

官方文档:https://ssssssss.org/

项目源码地址:https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-magic-api

SpringBoot可视化接口开发工具magic-api的更多相关文章

  1. 可视化接口管理工具RAP,模拟数据,校验接口

    最近看到一个不错的接口管理的工具,分享一下 RAP ppt介绍:http://www.imooc.com/video/11060 RAP是一个可视化接口管理工具 通过分析接口结构,动态生成模拟数据,校 ...

  2. 开发工具类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

  3. API 接口开发规范

    整体规范建议采用RESTful 方式来实施. 协议 API与用户的通信协议,总是使用HTTPs协议,确保交互数据的传输安全. 域名 应该尽量将API部署在专用域名之下.https://api.exam ...

  4. 十四种Java开发工具点评

    在计算机开发语言的历史中,从来没有哪种语言象Java那样受到如此众多厂商的支持,有如此多的开发工具,Java菜鸟们如初入大观园的刘姥姥,看花了眼,不知该何种选择.的确,这些工具各有所长,都没有绝对完美 ...

  5. JAVA程序员常用开发工具

    1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...

  6. 【工具】-RAP接口管理工具

    前言 RAP 是一个可视化接口管理工具, 通过分析接口结构,动态生成模拟数据,校验真实接口正确性, 围绕接口定义,通过一系列自动化工具提升我们的协作效率. 在 RAP 中,您可定义接口的 URL.请求 ...

  7. 快速上手IOT视觉化开发工具Node-RED

    作者:何信昱 现在有越来越多非专业背景但有创造热诚的Maker,想要进入物联网领域大展身手,但常常苦于无法撰写艰深难懂的程序代码,以及想要连接各种硬件与时下最流行的社群软件,却不知道如何使用开放给开发 ...

  8. 基于swoole框架hyperf开发的纯API接口化的后台RBAC管理工具hyperfly@v1.0.0发布

    hyperfly@v1.0.0发布 本文地址http://yangjianyong.cn/?p=323转载无需经过作者本人授权 github地址:https://github.com/vankour/ ...

  9. web应用开发模式、API接口、接口测试工具postman

    web应用开发模式.API接口.接口测试工具postman web开发模式 前后端混合开发模式 前后端混合开发模式是指前后端代码混合,所有的HTML代码和数据在服务器端拼接好,一次性将内容发送到客户端 ...

  10. 小D课堂【SpringBoot】接口Http协议开发实战

    ---恢复内容开始--- ====================2.SpringBoot接口Http协议开发实战 ============================= 1.SpringBoot ...

随机推荐

  1. SpringBoot-mybatis-plus 分页

    前言: 想必数据分页对于每一个程序员并不陌生,针对分页查询功能代码实现上:肯定是代码简洁明了且能达到分页的效果会更好! 现在我将基于SpringBoot - mybatisPlus分页查询的方法总结如 ...

  2. HBase Meta 元信息表修复实践

    作者:vivo 互联网大数据团队 - Huang Guihu.Chen Shengzun HBase是一款开源高可靠.高可扩展性.高性能的分布式非关系型数据库,广泛应用于大数据处理.实时计算.数据存储 ...

  3. 7月 Splashtop上线了这些新功能 快来看鸭

    经过我们的攻城狮天天努力,我们的软件又得到了升级和完善,上线了一些有用的新功能和增强功能,快来看看吧. Splashtop已为Splashtop Business Access,Splashtop远程 ...

  4. wpf布局递归

    wpf布局递归的调用到底是怎样的顺序?我一直挺模糊. 按照继承顺序. 已知: 1.1.UIElement:声明了Measure 1.2.UIElement:声明了MeasureCore,返回Size( ...

  5. MySQL所有的主从同步架构搭建方式

    目录 一.前言 二.关于MySQL主从同步 三.部署规划 3.1 服务器规划 3.2 数据库目录规划 四.准备工具 五.四台机器上使用通用二进制包安装MySQL(以node7为例) 5.1 上传MyS ...

  6. 阿里巴巴 MySQL 数据库之建表规约(一)

    建表规约 强制部分 [强制] 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint (1 表示是,0 表示否). 说明:任何字段如果为非负数,必须是 ...

  7. 使用Rainbond部署Logikm,轻松管理Kafka集群

    简介 滴滴Logi-KafkaManager脱胎于滴滴内部多年的Kafka运营实践经验,是面向Kafka用户.Kafka运维人员打造的共享多租户Kafka云平台.专注于Kafka运维管控.监控告警.资 ...

  8. docker基础使用和资源限制

    为什么使用容器 docker设计目标: 提供简单的应用打包工具 开发人员和运维人员职责逻辑分离 多环境保持一致性 轻量级 kubernetes设计目标: 集中管理所有容器 资源编排 资源调度 弹性伸缩 ...

  9. VmWare虚拟机和主机配置为同一网段IP

    参考博客:将虚拟机IP与主机IP设置在同一网段的方法 - 天懿 - 博客园 (cnblogs.com) 主机地址 主机通过WiFi连接,地址信息为: 虚拟机配置 选择编辑-->虚拟网络编辑器-- ...

  10. RabbbitMQ RabbitListener使用IP动态队列 Attribute value must be constant

    在RabbitMQ消息队列使用 @RabbitListener 接收消息,队列名称使用常量命名,但是如果使用动态队列名称,比如根据系统 ip 命名队列名称. 获取服务器 IP /** * 获取服务器i ...