magic-api简介

  • magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发。
  • 之前我们开发一个接口,至少需要Controller,Service,Dao,Mapper文件,还需要各种配置,搭建启动springboot项目,发布完成,接口才能访问,接口才算完成。

项目准备

1)新建一个SpringBoot的项目,导入数据库需要的依赖:

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.9</version></dependency>

2)新建数据库和表

3)在配置文件配置数据源

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghaiusername: rootpassword: root

2.2 加入magic-api⭐

1)在pom.xml中添加magic-api相关依赖:

<dependency><groupId>org.ssssssss</groupId><artifactId>magic-api-spring-boot-starter</artifactId><version>1.2.1</version>
</dependency>

2)在配置文件配置magic-api相关信息

magic-api:# 配置api管理页面入口web: /magic/web# 配置存储方式resource:# 配置接口资源存储位置,可选file、database、redistype: database# 存储表名tableName: magic_api_file# 使用database、redis存储时的key前缀prefix: /db2020# 是否是只读模式readonly: false# 启用驼峰命名转换sql-column-case: camel# 分页配置page-config:# 页大小的请求参数名称size: size# 页码的请求参数名称page: page# 未传页码时的默认页码default-page: 1# 未传页大小时的默认页大小default-size: 10

3)创建表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`)
)

4)启动项目,访问http://localhost:8080/magic/web,即可进入magic的管理页面

基本用法

添加

return db.table('user').insert(body);

修改

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

删除

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

查询

return db.table('user'
.where()
.eq('id',path.id)
.selectone();

分页查询

magic语法

  1. db模块
    (1)db是默认引入的模块,使用此模块操作数据库,需要使用return把结果返回。
    (2)db.table()就指定了表名,可以使用期自带的方法进行查询等操作,但其只能对单表进行操作,多表无法使用。
  2. 自定义查询

根据sql查询结果,返回的是list集合。select()

return db.select('select * from user')

若需要携带参数,可以使用#{}进行占位,其他查询类似。select()

return db.select('select * from user where id = #{id} ')

根据sql查询结果,返回的是int值。selectInt()

return db.selectInt('select count(*) from user')

查询单个对象,其返回值必须是小于等于一条数据,不能超过一条。selectOne()

return db.selectOne('select * from user where id = #{id} ')

查询单个列的值。若查询结果是多条,则只会返回第一条数据的对应字段信息。selectValue()

return db.selectValue('select username from user where id = #{id}');

分页查询。要传递分页的条件(当前页码page,每页条数size),会返回数据总条数和数据集合。page()

return db.page('select * from user')return db.table('user').page()

对于增删改操作,都可以使用此方法,不过一般删除会使用此方法,添加和修改均使用db.table()方式。原因是此方法必须使用get请求传递参数,不安全。update()

return db.update('delete from user where id=#{id}');//post
return db.table('user').primary('id',body.id).update(body);

集成Swagger⭐

1)导入Swagger相关依赖

<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>

2)在配置文件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

3)重启项目,访问Swagger界面http://localhost:8080/swagger-ui.html,即可查看我们在magic-api中写的接口

拦截器配置

在开发环境,可以使用magic进行接口的开发,但是在正式环境中,其页面是不能暴露出来的,同时swagger在正式环境也不能暴露。故需要拦截器进行拦截,同时其自带SQL的拦截器,可以打印SQL的日志信息。

/*** 拦截器配置*/
@Component
public class MyInterceptor implements SQLInterceptor, HandlerInterceptor {Logger logger = LoggerFactory.getLogger(this.getClass());@Value("${isAllowed}")private Boolean isAllowed;/**** 自定义SQL拦截器,打印sql及参数* @param boundSql* @param requestEntity*/@Overridepublic void preHandle(BoundSql boundSql, RequestEntity requestEntity) {logger.warn("执行的SQL===> " + boundSql.getSql());logger.warn("执行的SQL参数===> " + Arrays.toString(boundSql.getParameters()));}/*** 配置资源拦截器,开发页面只能在开发中使用,在正式环境拦截** @param request* @param response* @param handler* @return*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {if (!isAllowed) {Map<String, Object> result = new HashMap<>();result.put("msg", "抱歉,未找到可访问资源!");result.put("status", false);response.setCharacterEncoding("utf-8");response.setHeader("Content-type", "text/html;charset=UTF-8");response.getWriter().write(JSON.toJSONString(result));return false;}return true;}
}

还需要一个MVC的配置其注入拦截器和要拦截的资源:

/*** mvc配置,注入拦截器*/
@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {@Autowiredprivate MyInterceptor myInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {//addPathPatterns表示拦截所有请求,excludePathPatterns表示不拦截的请求registry.addInterceptor(myInterceptor).addPathPatterns("/swagger-ui.html").addPathPatterns("/magic/**");}
}

就可以通过修改isAllowed的值选择是否可访问。到这里,基本的接口开发已经完成,只需前端进行整合即可。

magic API构建和基础实现相关推荐

  1. FreeMarker中文帮助手册API文档,基础入门学习文档

    FreeMarker中文帮助手册API文档,基础入门学习文档 分类: 编程技术 发布: bywei 浏览: 7 日期: 2011年5月28日 分享到: QQ空间 新浪微博 腾讯微博 人人网 什么是Fr ...

  2. 使用Nomad构建弹性基础架构: 作业生命周期

    这是Nomad构建弹性基础架构系列(第1部分,第2部分)中的第三部分.在本系列中,我们将探讨Nomad如何处理意外故障.停机和集群基础架构的日常维护,通常不需要操作员干预. 在本文中,我们将介绍Nom ...

  3. 使用Nomad构建弹性基础架构:重新启动任务

    Nomad是一个功能强大.灵活的调度器,适用于长期运行的服务和批处理任务.通过广泛的驱动程序,Nomad可以调度基于容器的工作负载.原始二进制文件.java应用程序等等.Nomad操作简单,易伸缩,与 ...

  4. 【物体检测快速入门系列 | 01 】基于Tensorflow2.x Object Detection API构建自定义物体检测器

    这是机器未来的第1篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124745966 CSDN话题挑战赛第1期 活动详情地址 ...

  5. 使用 OpenAI API 构建 Next.js 应用程序的初学者指南

    欢迎阅读我们的初学者指南,了解如何使用 OpenAI API 构建 Next.js 应用程序.在本教程中,我们将引导您完成利用 OpenAI API 的功能创建功能强大且智能的 Next.js 应用程 ...

  6. JPA 2.0 中的动态类型安全查询(如何通过 Criteria API 构建动态查询并减少运行时失败)...

    简介:  如果编译器能够对查询执行语法正确性检查,那么对于 Java 对象而言该查询就是类型安全的.Java™Persistence API (JPA) 的 2.0 版本引入了 Criteria AP ...

  7. Gradle2.0用户指南翻译——第六章. 构建脚本基础

    翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc 本文翻译所在分支: https://github.com/msdx/gradledoc/tre ...

  8. SpringBoot整合Swagger测试api构建

    @Author:SimpleWu 什么是Swagger? Swagger是什么:THE WORLD'S MOST POPULAR API TOOLING 根据官网的介绍: Swagger Inspec ...

  9. 使用Nomad构建弹性基础架构: 容错和中断恢复

    这是Nomad构建弹性基础架构系列文章的第四篇也是最后一篇(第1部分,第2部分,第3部分).在本系列文章中,我们将探讨Nomad如何处理意外故障.停机和集群基础设施的常规维护,通常不需要操作员干预. ...

  10. 使用Nomad构建弹性基础架构:计划和自我修复

    这是 使用Nomad构建弹性基础架构 系列文章的第二篇.在本系列中,我们将探讨Nomad如何处理意外故障.停机和集群基础设施的常规维护,通常不需要操作员干预. 在这篇文章中,我们将会看到Nomad客户 ...

最新文章

  1. sql server规范
  2. 中文WAP浏览器WapDisplayer V1.5发布
  3. LCD1602液晶显示
  4. php mysqli result,PHP mysqli_free_result()与mysqli_fetch_array()函数详解
  5. html表单验证元素必填,JavaScript 表单验证
  6. 计算机毕业论文工作进展情况,论文中期检查进展怎么写_论文中期检查表怎么写_论文进展情况怎么写...
  7. 花体字转换器微信小程序源码支持多种花样字体不同风格
  8. JAVA大型OA协同办公系统源码【源码免费分享】
  9. 大学生创新创业类竞赛参赛指南
  10. 开心网kaixin001状告kaixin,停用“开心网”名称,赔偿1000万元并公开道歉
  11. laravel框架中Cache缓存类中的原子锁
  12. Android关于libs,jniLibs库的基本使用说明及冲突解决
  13. 不习惯的 Vue3 起步六 の Echarts绘制下钻地图
  14. 关闭/删除“设备和驱动器”里的图标(如迅雷下载、WPS网盘)
  15. c++,全局函数做友名
  16. 自签名多级证书亲测可用
  17. bzoj4137[FJOI2015]火星商店问题
  18. Java基础——Java多继承的三种实现方式
  19. WPA_CLI 的介绍:介绍如何使用wpa_cli连接WiFi的方法
  20. SeekBarVolumizer.java

热门文章

  1. Win11怎么把桌面文件路径改到D盘
  2. VMware Esxi 下载地址
  3. 计算机主机跳线连接图片,台式电脑主机五根跳线怎么接?红白 蓝白 绿 白 橙白...
  4. mysql查询各科成绩的前三名
  5. 为macbook pro安装内存条
  6. mac 上 react native 8081端口被占用
  7. iPhone怎么设置闹钟铃声?苹果手机自定义闹钟铃声教程
  8. 微生物组对肥胖影响的最新研究分析
  9. RSA公私钥pkcs1与pkcs8格式的转换
  10. 编程路上,对于迷失者的一些小小建议