使用magic-api ,让你的开发效率蹭蹭提升

这篇具有很好参考价值的文章主要介绍了使用magic-api ,让你的开发效率蹭蹭提升。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注意看目录

1、magic-api 是什么

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

2、magic-api 相关资料

官网:https://ssssssss.org

示例:ssssssss-team/magic-api-example

demo:https://magic-api.ssssssss.org

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

quickstart:简介 | magic-api

3、入门

3.1 加入依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>org.ssssssss</groupId>
    <artifactId>magic-api-spring-boot-starter</artifactId>
    <version>2.0.2</version>
</dependency>

3.2 application.yaml 配置

magic-api:
  web: /magic/web
  resource:
    location: classpath:magic-api
  #    type: database  # 存到数据库
#    table-name: magic_api_file  # 表名
#    prefix: /magic-api  # ??
  response-code:
    success: 200 #执行成功的code值
    invalid: 400 #参数验证未通过的code值
    exception: 500 #执行出现异常的code值
  backup: #备份相关配置
    enable: true #是否启用
    max-history: -1 #备份保留天数,-1为永久保留
    table-name: magic_backup_record_v2 #使用数据库存储备份时的表名
  swagger-config:
    # 文档名称
    name: MagicAPI
    # 文档标题
    title: MagicAPI Swagger Docs
    # 文档描述
    description: MagicAPI
    # 文档版本号
    version: 1.0
    # 文档资源位置
    location: /v2/api-docs/magic-api/swagger2.json

在服务启动后,在控制台可以看到访问地址。

4、数据库建表语句

最初的时候将配置文件放在mysql中,数据库建表语句如下。

CREATE TABLE `magic_api_file` (
  `file_path` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `file_content` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  PRIMARY KEY (`file_path`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

看到上面配置中备份开启了相关的配置,注:在每次修改的时候增量备份

CREATE TABLE `magic_backup_record_v2` (
  `id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '原对象ID',
  `create_date` bigint NOT NULL COMMENT '备份时间',
  `tag` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '标签',
  `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '类型',
  `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '原名称',
  `content` blob COMMENT '备份内容',
  `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '操作人',
  PRIMARY KEY (`id`,`create_date`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

5、swagger配置

接口的对接使用swagger,官方也提供了方案。

pom中增加依赖,application中的配置在3.2中

<!--        swagger配置  start-->
<dependency>
    <groupId>org.ssssssss</groupId>
    <artifactId>magic-api-plugin-swagger</artifactId>
    <version>2.0.2</version>
</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>
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>swagger-bootstrap-ui</artifactId>
    <version>1.8.1</version>
</dependency>

application.yml中配置

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

注:这里加了两个UI,springfox-swagger-ui 是自带的,没有搜索功能,界面不怎么好

swagger-bootstrap-ui 界面比较友好,有搜索功能,也可以替换自己喜欢的其他UI

http://172.26.8.17:8080/swagger-ui.html

http://172.26.8.17:8080/doc.html

6、访问请求变量

request模块 | magic-api一个基于VuePress的 知识管理&博客 主题https://www.ssssssss.org/magic-api/pages/module/request/#%E5%BC%95%E7%94%A8%E6%A8%A1%E5%9D%97直接上文档

request模块 | magic-api一个基于VuePress的 知识管理&博客 主题https://www.ssssssss.org/magic-api/pages/module/request/#%E5%BC%95%E7%94%A8%E6%A8%A1%E5%9D%97

7、脚本中怎么使用java类

先导入,然后正常使用

import com.xin.util.DateUtil;
var shortDayStr = DateUtil.getShortDayStr(new Date());

8、多数据源配置

8.1 application.yml

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
  datasource:
    realtime:
      driver-class-name: com.mysql.cj.jdbc.Driver
      type: com.zaxxer.hikari.HikariDataSource
      jdbc-url: jdbc:mysql://172.36.2.121:3306/realtime?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
      username: xxx
      password: xxx
    history:
      driver-class-name: com.mysql.cj.jdbc.Driver
      jdbc-url: jdbc:mysql://172.36.2.121:3306/history?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
      username: xxx
      password: xxx

8.2 注册数据源到magic-api

主要是将数据源注册到MagicDynamicDataSource ,设置一个作为默认数据源

@Configuration
public class DataSourceConfig {
    /**
     * 实时数据库
     */
    @Bean(name = "realtimeDs")
    @ConfigurationProperties(prefix = "spring.datasource.realtime")
    public DataSource dataSourceRealtime() {
        return DataSourceBuilder.create().build();
    }
    /**
     * 历史数据库
     */
    @Bean(name = "historyDs")
    @ConfigurationProperties(prefix = "spring.datasource.history")
    public DataSource dataSourceHistory() {
        return DataSourceBuilder.create().build();
    }
    /**
     * 注入数据库到magic
     */
    @Bean
    public MagicDynamicDataSource magicDynamicDataSource(DataSource realtimeDs, DataSource historyDs) {
        MagicDynamicDataSource dynamicDataSource = new MagicDynamicDataSource();
        // 设置默认数据源
        dynamicDataSource.setDefault(realtimeDs);
        dynamicDataSource.add("history", historyDs);
        return dynamicDataSource;
    }
}

在脚本中使用

// 默认数据源 ->realtimeDs
db.select(sql)
// 使用其他数据源
db.history.select(finalSql)

9、java代码中调用脚本代码

9.1 java代码

//注入服务
@Autowired
MagicAPIService magicAPIService;
// 调用http接口
magicAPIService.execute("get", "/state/road/event/type/count", null);
// 调用函数
Map<String, Object> params = new HashMap<>(1);
params.put("data", cacheList);
Object invoke = magicAPIService.invoke("/save_road_event", params);

9.2 脚本定义

函数定义如下,

var tableSql = """
SELECT
	TABLE_NAME 
FROM
	INFORMATION_SCHEMA.TABLES 
WHERE
	TABLE_SCHEMA = '${dbName}'
	AND TABLE_NAME in (#{tableNameList})
"""
var existTableList
if (dbName =='history'){
     existTableList = db.history.select(tableSql)
}else if (dbName =='trans_road_net'){
    existTableList = db.road.select(tableSql)
}else{
    existTableList = db.select(tableSql)
}


var resultList = []
for (index,obj in existTableList){

    var tableName = obj.TABLE_NAME
    resultList.add(tableName)
}
return resultList

http接口正常定义,在传递参数的时候注意包装成map,参数的key为需要传递的参数名,作为上下文

使用magic-api ,让你的开发效率蹭蹭提升

10、脚本之间互相调用

10.1函数调用

函数定义见9.2

//引入函数
import '@/check_table' as check_table;
//    调用函数
var existTableList = check_table(inStr,DBEnum.TRANS_ROAD_NET.dbName)

10.2 接口间互相调用

import '@get:testtb' as testtb;
 var tableNameList = "bz_map"
 var dbName = "road_state_dev"
var l = testtb()
 return l

可以看到函数和接口之间的区别在于接口前增加了请求方式

11、字符串替代

主要区别在于${}用于拼接SQL(会产生SQL注入问题),#{}会替换成占位符(不会产生SQL注入问题),这里的区别与Mybatis一致

因为我在开发中使用的表示动态表,在表名的替换上使用$,在参数上使用#

import request;
var fullDayStr = DateUtil.getFullDayStr(new Date());
var sql = """
SELECT
    subdistrict,
    speed,
    degree,
    b.max_time 
FROM
    subdistrict_speed_${fullDayStr}_realtime a,
    ( SELECT max( computedate ) max_time FROM subdistrict_speed_${fullDayStr}_realtime where district = #{district} ) b 
WHERE
    a.computedate = b.max_time 
    AND district = #{district}  
ORDER BY
    degree
"""
return db.road.select(sql);

12、生产环境的发布

主要是为了避免被修改,而且避免数据库的导入导出,所以直接打包到jar中

12.1 接口导出

右上角点击导出按钮,会导出一个压缩包

使用magic-api ,让你的开发效率蹭蹭提升

 文章来源地址https://www.toymoban.com/news/detail-499044.html

12.2 解压后放到resources目录下

在resource目录下创建一个magic-api目录,将解压后的文件放到下面

使用magic-api ,让你的开发效率蹭蹭提升

 

12.3 修改配置

magic-api: web: /magic/web resource: location: classpath:magic-api

注意:官网上抄的classpath后会有空格,导致报错,中间没有空格

总结

magic-api 总体来说还是非常方便,在做一些中小型项目的时候可以轻易的解决问题,但是在一些对代码性能要求比较高,对代码自由度比较高的场景不太适合。

magic-api还有很多特性,因为在项目中没有使用,这次就没做探索


推荐书了:

19个新媒体大类(视频、音频、直播、社群、微博、社区团购、行业垂直、知识付费、信息资讯、传统电商、社交交友、运动健身、资讯搜索、地图导航、旅游、网站、浏览器、本地生活、其他热门App),引导新媒体全网运营;17个章带你打通全网数字化营销。

一本新媒体百科全书,让你用一本书实现新媒体全网运营一本通!

京东自营购买链接:https://item.jd.com/13808176.html

使用magic-api ,让你的开发效率蹭蹭提升

 

到了这里,关于使用magic-api ,让你的开发效率蹭蹭提升的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Copilot 插件的使用介绍:让你的开发效率翻倍

    摘要:Copilot 是一款强大的代码自动完成插件,能够帮助开发者提高开发效率,减少重复性劳动。本文将详细介绍 Copilot 插件的使用方法,让你轻松上手,开启编程新篇章。 一、Copilot 插件简介 Copilot 是由 GitHub 开发的一款代码自动完成插件,使用了OpenAI的GPT模型。它可以帮助

    2024年03月21日
    浏览(67)
  • 超级实用!Android Studio的10大神器插件,让你的开发效率翻倍!

    Android Studio是一款功能强大的集成开发环境(IDE),专为Android应用程序开发而设计。它提供了丰富的工具和功能,使开发者能够轻松创建高质量的Android应用。除了内置的功能外,Android Studio还支持插件系统,允许开发者根据自己的需求进行定制和扩展。在这篇文章中,我们将

    2024年03月14日
    浏览(48)
  • MyBatis-Plus 可视化代码生成器来啦,让你的开发效率大大提速!!

    在基于Mybatis的开发模式中,很多开发者还会选择Mybatis-Plus来辅助功能开发,以此提高开发的效率。虽然Mybatis也有代码生成的工具,但Mybatis-Plus由于在Mybatis基础上做了一些调整,因此,常规的生成工具生成的代码还有一些不太符合预期。而且对于多数据库的支持不是很好。

    2024年02月05日
    浏览(63)
  • 快速搭建API随心搭,让你的web开发更加高效

    随着互联网的发展,越来越多的应用和服务需要通过API接口来实现。API(Application Programming Interface,应用程序编程接口)可以理解为两个软件之间的桥梁,通过API接口,两个软件可以相互交流并进行数据交换。如今,API已经成为许多公司和应用程序的核心,因此快速搭建并管

    2024年02月08日
    浏览(53)
  • 用上Parallel让你的.NET应用效率飙升

    简介 .NET Framework 和 .NET Core 提供了强大的并行编程支持,其中一个核心工具就是Parallel类。Parallel类是.NET Framework4.0推出的新特性。Parallel类使得在多核系统上执行并行操作变得更加简单和高效。通过并行编程,可以充分利用现代计算机系统的硬件资源,提高应用程序的性能。

    2024年02月05日
    浏览(52)
  • 别人都不知道的“好用”网站,让你的效率飞快

    ✅🎡个人主页:程序猿追 ✅🎡系列专栏:【日常学习上的分享】 ✅🎡目前状态:创建Java学习之路(零基础到就业实战)系列,目前更新到JAVAWEB开发 ✅🎡作者简介:大家好,我是程序猿追,全栈领域新星创作者,算法爱好者,常在作者周榜排名前30,某不知名的 ACMer ✅🎡

    2024年02月10日
    浏览(106)
  • MongoDB管理神器来袭!NexNoSqlClient让你的效率翻倍!

    如果你在日常工作中需要经常使用MongoDB,那么你一定体验过这样一些痛点;繁琐的脚本编写,冗长的命令行操作,复杂的数据建模和索引等等。这些问题不仅让我们的工作效率低下,还容易出现错误和漏洞,给数据安全带来风险,所以我们急需一款能够帮我们解决这一系列问

    2024年02月01日
    浏览(57)
  • 15 个非常流行的VsCode插件,让你的编码效率倍增!

    VS Code已经成为了最受欢迎的代码编辑器之一。 它的简洁性、易用性和可扩展性使得它成为了许多开发者的首选。 而在VS Code中,插件是其最大的卖点之一。 通过安装插件,你可以将VS Code打造成一个功能强大的开发环境,从而提高你的编码效率。 本文中,将介绍15个非常流行

    2024年02月06日
    浏览(53)
  • 10几个国内AI大模型,让你的工作学习效率翻倍!

    ✍创作者:全栈弄潮儿 🏡 个人主页: 全栈弄潮儿的个人主页 🏙️ 个人社区,欢迎你的加入:全栈弄潮儿的个人社区 📙 专栏地址:AI大模型 随着ChatGPT迅速走红,国内各大企业纷纷发力认知大模型领域。经过一段时间的酝酿,国内AI大模型也相继发布,快速点燃国内科技圈

    2024年02月08日
    浏览(47)
  • Mac苹果装机工作必备软件推荐,十大效率神器让你的 Mac 雄起

    Mac笔记本固然好用,但还是会有一些使用中的痛点,下面给大家推荐10款最常用的提高mac使用效率的软件 一、Magnet Pro - 窗口大小布局位置控制 这款软件可以让你的Mac像Windows一样,通过拖动窗口实现窗口最大化、左右半屏、上下半屏、1/4窗口、1/3窗口等功能 同时,你还可以通

    2024年02月16日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包