SpringBoot可视化接口开发工具magic-api的简单使用教程

目录
  • magic-api简介
  • 使用
    • 在SpringBoot中使用
  • 增删改查
  • 参数验证
  • 结果转换
  • 使用事务
  • 集成Swagger
  • 总结
  • 参考资料

magic-api简介

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

使用

下面我们来波实战,熟悉下使用magic-api来开发API接口。

在SpringBoot中使用

magic-api原生支持SpringBoot,可与SpringBoot无缝整合。

  • 首先在pom.xml中添加magic-api相关依赖;
<!--接口快速开发框架 magic-api-->
<dependency>
    <groupId>org.ssssssss</groupId>
    <artifactId>magic-api-spring-boot-starter</artifactId>
    <version>1.0.2</version>
</dependency>
  • 在配置文件application.yml中添加数据源及magic-api相关配置;
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/magic_api?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root

magic-api:
  # 配置api管理页面入口
  web: /magic/web
  # 配置存储方式
  resource:
    # 配置接口资源存储位置,可选file、database、redis
    type: database
    # 存储表名
    tableName: magic_api_file
    # 使用database、redis存储时的key前缀
    prefix: /magic-api
    # 是否是只读模式
    readonly: false
  # 启用驼峰命名转换
  sql-column-case: camel
  # 分页配置
  page-config:
    # 页大小的请求参数名称
    size: size
    # 页码的请求参数名称
    page: page
    # 未传页码时的默认页码
    default-page: 1
    # 未传页大小时的默认页大小
    default-size: 10
  • 在MySQL中创建数据库magic_api,由于我们配置了使用数据库存储接口资源,所以需要先创建magic_api_file表;
CREATE TABLE `magic_api_file`
(
  `id`           bigint(255) NOT NULL AUTO_INCREMENT,
  `file_path`    varchar(255) DEFAULT NULL,
  `file_content` text,
  PRIMARY KEY (`id`)
)
  • 再创建pms_brand表,用于测试;
CREATE TABLE `pms_brand` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `big_pic` varchar(255) DEFAULT NULL,
  `brand_story` varchar(255) DEFAULT NULL,
  `factory_status` bit(1) DEFAULT NULL,
  `first_letter` varchar(255) DEFAULT NULL,
  `logo` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `product_comment_count` int(11) DEFAULT NULL,
  `product_count` int(11) DEFAULT NULL,
  `show_status` bit(1) DEFAULT NULL,
  `sort` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
  • 最后启动项目,访问magic-api的UI界面,访问地址:http://localhost:8080/magic/web

增删改查

接下来我们将以商品品牌管理为例,体验下使用magic-api开发接口的快感!使用magic-api开发API接口,仅需在界面中使用magic-script脚本即可。

  • 首先我们来写个新增接口,先创建一个分组,然后在分组中创建一个新增接口,在编辑框中输入如下脚本;
// 使用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);
  • 在底部的接口信息中进行如下配置,POST请求,请求路径为/test,请求参数放在请求body中;

  • 当我们不添加name字段时,调用接口会返回我们自己定义的错误信息和状态码。

结果转换

我们可以使用map方法对查询数据进行转换,返回我们想要的数据。

  • 比如我们想将showStatus转换为中文说明,并只返回三个需要的字段,在编辑框中输入如下脚本;
var list = db.table('pms_brand').select();
return list.map((item)=>{
    name : item.name,
    firstLetter : item.firstLetter,
    showStatus : item.showStatus? '不显示' : '显示'
});
  • 访问该接口,在执行结果中可以发现,返回结果已经转换。

使用事务

在我们使用Java开发接口的时候,少不了用到事务,当然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;
  • 在底部的接口信息中进行如下配置,POST请求,请求路径为/test,请求参数放在请求body中;

集成Swagger

写了那么多接口,都是在magic-api的界面中进行调试的。如果你习惯使用Swagger,magic-api也可以和Swagger进行无缝整合。

  • 首先在pom.xml中添加Swagger相关依赖;
<dependencies>
    <!--Swagger-UI API文档生产工具-->
    <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>
  • 在配置文件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
  • 访问Swagger界面即可查看我们在magic-api中写的接口了,访问地址:http://localhost:8080/swagger-ui.html

总结

magic-api是个很有意思的框架,可以通过在UI界面中使用简单的脚本,进行API接口的开发。不过作为一款小众框架,magic-api还有很长一段路要走!

参考资料

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

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

以上就是SpringBoot可视化接口开发工具magic-api的简单使用教程的详细内容,更多关于SpringBoot magic-api的使用的资料请关注我们其它相关文章!

(0)

相关推荐

  • Vue+Springboot实现接口签名的示例代码

    1.实现思路 接口签名目的是为了,确保请求参数不会被篡改,请求的数据是否已超时,数据是否重复提交等. 接口签名示意图 客户端提交请求时,将以下参数按照约定签名方式进行签名,随后将参数和签名一同提交服务端: 1.请求头部分(header) appid:针对不同的调用方分配不同的appid. noce:请求的流水号,防止重复提交. timestamp:请求时间戳,验证请求是否已超时失效. 2.数据部分 Path:按照path中的参数将所有key=value进行拼接. Query:按照所有key=va

  • Springboot添加支付接口

    1. 支付宝支付接口(沙箱实现) 1.1 支付宝沙箱账号获取 官网 此处作者已经申请了一个沙箱账号,申请过程就不再赘述 如下图: 此处可以自行设置账户金额 1.2 下载客户端(目前好像只支持Android) 下载完成后根据官方提供的账号以及密码登录手机端支付宝账号 如图(商家账号): 1.3 代码配置 工具类AlipayConfig public class AlipayConfig { //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ // 应用ID,您的APPI

  • SpringBoot同一接口多个实现类配置的实例详解

    SpringBoot项目中可能出现一个接口有多个实现类的情况,如果不进行配置,注入接口时编译器不知道要注入哪个实现类就会报错,因此需要进行配置.以下进行举例: 接口如下: public interface NoticeService { public String noticeUser(Long id); } 两个实现类如下: @Service public class NoticeServiceImpl1 implements NoticeService { public String not

  • SpringBoot 防止接口恶意多次请求的操作

    前言 刚写代码不就,还不能做深层次安全措施,今天研究了一下基本的防止接口多次恶意请求的方法. 思路 1:设置同一IP,一个时间段内允许访问的最大次数 2:记录所有IP单位时间内访问的次数 3:将所有被限制IP存到存储器 4:通过IP过滤访问请求 该demo只有后台Java代码,没有前端 代码 首先是获取IP的工具类 public class Ipsettings { public static String getRemoteHost(HttpServletRequest request) {

  • 使用SpringBoot跨系统调用接口的方案

    一.简介 项目开发中存在系统之间互调问题,又不想用dubbo,这里提供几种springboot方案: 1.使用Feign进行消费(推荐) 2.使用原始httpClient请求 3.使用RestTemplate方法 二.方案 方案一:使用Feign进行消费(推荐) 1.在maven中添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-st

  • SpringBoot使用Feign调用其他服务接口

    使用SpringCloud的Feign组件能够为服务间的调用节省编码时间并提高开发效率,当服务本身不复杂时可以单独将该组件拿出使用. 引入依赖 <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign --> <dependency> <groupId>org.springframework.cloud</groupId>

  • 教你利用springboot集成swagger并生成接口文档

    效果图 实现步骤 1.maven中引入jar包,不同版本的swagger可能页面效果不一样. <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.1</version> </dependency> <dependency> <groupId&g

  • SpringBoot集成Spring security JWT实现接口权限认证

    1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjw

  • 基于注解实现 SpringBoot 接口防刷的方法

    该示例项目通过自定义注解,实现接口访问次数控制,从而实现接口防刷功能,项目结构如下: 一.编写注解类 AccessLimit package cn.mygweb.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Targ

  • springboot运行时新增/更新外部接口的实现方法

    最近有个需求:需要让现有springboot项目可以加载外部的jar包实现新增.更新接口逻辑.本着拿来主义的思维网上找了半天没有找到类似的东西,唯一有点相似的还是spring-loaded但是这个东西据我网上了解有如下缺点: 1.使用java agent启动,个人倾向于直接使用pom依赖的方式 2.不支持新增字段,新增方法,估计也不支持mybatis的xml加载那些吧,没了解过 3.只适合在开发环境IDE中使用,没法生产使用 无奈之下,我只能自己实现一个了,我需要实现的功能如下 1.加载外部扩展

  • 使用springboot暴露oracle数据接口的问题

    新建一个Spring Initializr项目 2.把pom.xml文件中的oracle依赖换成自己的oracle版本依赖: 原来的: 现在的: <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.1.0</version> </dependency> 3.编辑application

随机推荐