Java接口配置框架magic-api - Go语言中文社区

Java接口配置框架magic-api


1. magic三大框架

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

magic-page-designer
在线页面快速开发平台
基于 vue 的在线页面快速开发平台,主要把所有的 vue 代码都改为在线配置,最终获得一个 json 格式的页面

spider-flow
新一代爬虫平台
基于Java实现的新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。

2. magic-api概述

2.2 magic-api简介

今天给大家安利一款非常优秀的低代码平台,可以实现接口的动态配置发布,不需要编写代码。

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

上边是官方定义,简单来说就是之前我们开发一个接口,至少需要Controller,Service,Dao,Mapper文件,还需要各种配置,搭建启动springboot项目,发布完成,接口才能访问,接口才算完成。
而magic要做的就是通过UI界面动态的配置一下接口路径,出入参,点击保存,接口发布完成,即可访问,不需要编写代码,只需要简单配置,还支持事物,分页,http请求等数据库操作,有点类似于现在的低代码平台,对于一些非核心的字典呀等静态数据使用还是非常方便的,一款非常优秀的低代码框架,可以快速接口开发。

官网地址:https://www.ssssssss.org/
文档地址:https://www.ssssssss.org/magic-api/
演示地址:https://magic-api.ssssssss.org/

2.2 magic-api特点

特性

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

3. magic-api框架搭建

3.1 创建数据库

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 `magic_api_backup` (
  `id` varchar(32) NOT NULL COMMENT '原对象ID',
  `create_date` bigint(13) NOT NULL COMMENT '备份时间',
  `tag` varchar(32) DEFAULT NULL COMMENT '标签',
  `type` varchar(32) DEFAULT NULL COMMENT '类型',
  `name` varchar(64) DEFAULT NULL COMMENT '原名称',
  `content` mediumtext COMMENT '备份内容',
  `create_by` varchar(64) DEFAULT NULL COMMENT '操作人',
  PRIMARY KEY (`id`,`create_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

select * from magic_api_info;
CREATE TABLE `magic_api_info` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID主键',
  `name` varchar(64) DEFAULT NULL COMMENT 'magic名称',
  `address` varchar(64) DEFAULT NULL COMMENT 'api地址',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='魔术api';
-- 插入数据v
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (14, '鉴权API', '/auth/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (15, '用户API', '/user/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (16, '商品API', '/goods/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (17, '类目API', '/category/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (18, '订单API', '/order/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (19, '活动API-NEW', '/activity/**');
INSERT INTO `magic`.`magic_api_info`(`id`, `name`, `address`) VALUES (20, '营销API', '/marking/**');

3.2 创建springboot项目

在这里插入图片描述

3.3 引入依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 以spring-boot-starter的方式引用 -->
        <dependency>
            <groupId>org.ssssssss</groupId>
            <artifactId>magic-api-spring-boot-starter</artifactId>
            <version>1.4.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--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>
    </dependencies>

3.4 application.yml配置

server:
  port: 9999
  # 配置静态资源启用 gzip 压缩
  compression:
    enabled: true
    min-response-size: 128
# 配置主数据源
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  datasource:
    url: jdbc:mysql://localhost:3306/magic?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123456
#  data:
    # 配置mongo数据源
#    mongodb:
#      host: localhost
#      port: 27017
#      database: magicapi
#      username: magicapi
#      password: 123456
  # 配置redis数据源
#  redis:
#    host: localhost
#    port: 6379
#    database: 4
#    timeout: 5000
logging:
  level:
    org:
      springframework:
        jdbc:
          core:
            JdbcTemplate: DEBUG #打印SQL
            StatementCreatorUtils: TRACE  #打印SQL参数
# magic配置
magic-api:
  web: /magic/web
  resource:
    type: database  # 配置接口存储方式,这里选择存在数据库中
    table-name: magic_api_file  # 数据库中的表名
    prefix: /magic-api  # 前缀
#    location: classpath:magic-api
# 其它配置请参考 https://ssssssss.org/config/

  # 权限配置
  security-config:
    username: admin # 登录用的用户名
    password: 123456 # 登录用的密码

  # 响应码配置
  response-code-config:
    success: 200 #执行成功的code值
    invalid: 400 #参数验证未通过的code值
    exception: 500 #执行出现异常的code值

  # swagger配置
  swagger-config:
    version: 1.0
    description: MagicAPI 接口信息
    title: MagicAPI Swagger Docs
    name: MagicAPI 接口
    location: /v2/api-docs/magic-api/swagger2.json

3.5 启动类

MagicApiApplication

package com.zrj.magic;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * magic-api
 *
 * @author zrj
 * @since 20210910
 */
@EnableSwagger2
@SpringBootApplication
public class MagicApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(MagicApiApplication.class, args);
    }

}

3.6 其他自定义类

其他剩下的都是一些定制化的配置类。详见magic-api-simple。
gitee地址:
https://gitee.com/ssssssss-team/magic-api-example

magic-api 配置类MagicAPIConfiguration

package com.zrj.magic.configuration;

import com.zrj.magic.interceptor.CustomRequestInterceptor;
import com.zrj.magic.interceptor.CustomUIAuthorizationInterceptor;
import com.zrj.magic.provider.*;
import com.zrj.magic.scripts.CustomFunction;
import com.zrj.magic.scripts.CustomFunctionExtension;
import com.zrj.magic.scripts.CustomModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.ssssssss.magicapi.adapter.Resource;
import org.ssssssss.magicapi.config.MagicDynamicDataSource;
import org.ssssssss.magicapi.provider.GroupServiceProvider;
import org.ssssssss.magicapi.provider.PageProvider;

import javax.sql.DataSource;

/**
 * magic-api 配置类
 * 以下只配置了多数据源
 * 其它如果有需要可以自行放开 // @Bean 注释查看效果
 */
@Configuration
public class MagicAPIConfiguration {

    /**
     * 配置多数据源
     *
     * @see MagicDynamicDataSource
     */
    @Bean
    public MagicDynamicDataSource magicDynamicDataSource(DataSource dataSource) {
        MagicDynamicDataSource dynamicDataSource = new MagicDynamicDataSource();
        dynamicDataSource.setDefault(dataSource); // 设置默认数据源
        dynamicDataSource.add("slave", dataSource);
        return dynamicDataSource;
    }

    /**
     * 配置自定义JSON结果
     */
    //@Bean
    public CustomJsonValueProvider customJsonValueProvider() {
        return new CustomJsonValueProvider();
    }

    /**
     * 配置分页获取方式
     */
    // @Bean
    public PageProvider pageProvider() {
        return new CustomPageProvider();
    }

    /**
     * 自定义UI界面鉴权
     */
    //@Bean
    public CustomUIAuthorizationInterceptor customUIAuthorizationInterceptor() {
        return new CustomUIAuthorizationInterceptor();
    }

    /**
     * 自定义请求拦截器(鉴权)
     */
    // @Bean
    public CustomRequestInterceptor customRequestInterceptor() {
        return new CustomRequestInterceptor();
    }

    /**
     * 自定义SQL缓存
     */
    // @Bean
    public CustomSqlCache customSqlCache() {
        return new CustomSqlCache();
    }

    /**
     * 自定义函数
     */
    // @Bean
    public CustomFunction customFunction() {
        return new CustomFunction();
    }

    /**
     * 自定义方法扩展
     */
    // @Bean
    public CustomFunctionExtension customFunctionExtension() {
        return new CustomFunctionExtension();
    }

    /**
     * 自定义模块
     */
    // @Bean
    public CustomModule customModule() {
        return new CustomModule();
    }

    /**
     * 自定义脚本语言
     */
    // @Bean
    public CustomLanguageProvider customLanguageProvider() {
        return new CustomLanguageProvider();
    }

    /**
     * 自定义列名转换
     */
    // @Bean
    public CustomMapperProvider customMapperProvider() {
        return new CustomMapperProvider();
    }

    /**
     * 自定义接口脚本加解密
     */
    // @Bean
    public CustomApiServiceProvider customApiServiceProvider(Resource resource, GroupServiceProvider groupServiceProvider) {
        return new CustomApiServiceProvider(resource, groupServiceProvider);
    }

}

4. magic实现验证

4.1 magic ui

访问地址:http://localhost:9999/magic/web/index.html
启动控制台输出

********************************************当前服务相关地址********************************************
服务启动成功,magic-api已内置启动! Access URLs:
接口本地地址: 		http://localhost:9999/
接口外部访问地址: 	http://10.255.1.46:9999/
接口配置平台: 		http://10.255.1.46:9999/magic/web/index.html
可通过配置关闭输出: 	magic-api.show-url=false
********************************************当前服务相关地址********************************************

在这里插入图片描述

4.2 swagger

swagger地址:http://localhost:9999/swagger-ui.html#/
这个需要注解@EnableSwagger2,否则找不到。
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_37583655/article/details/120241994
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢