zl程序教程

您现在的位置是:首页 >  其他

当前栏目

接口快速开发框架 magic-api 2.x 进阶--1

接口框架API开发 快速 -- 进阶 Magic
2023-09-11 14:16:24 时间

magic-api介绍

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

本文针对magic-api的以下特性进行测试验证

  • 直接调用JAVA类的静态方法
  • 通过spring bean调用JAVA类的实例方法
  • 在spring bean中调用magic-api接口
  • 在spring bean中获取动态数据源信息及web配置文件信息

magic-api的特性测试

调用JAVA静态方法

在magic-api中可以直接调用JAVA类的静态方法
在这里插入图片描述

调用JAVA实例方法

需要将JAVA类注册为Spring Bean,否则会报:magic-api object is not an instance of declaring class

即在MagicAPIConfiguration中添加如下代码:

@Configuration
public class MagicAPIConfiguration {
....
	@Bean
	public HiService getHiService(){
		return new HiService();
	}
....
}

在这里插入图片描述

单表数据查询

可以直接使用在spring 配置文件中配置的数据源,进行数据查询操作
此magic-api在在java bean中调用magic-api中被调用
在这里插入图片描述

在java bean中调用magic-api

在java bean中,可以通过MagicAPIService 实例调用 通过magic-api界面配置的API接口
在这里插入图片描述

使用配置的数据源执行SQL

在java bean中,可以通过MagicDynamicDataSource实例,获取配置的数据源信息,然后拿到指定数据源对应的JdbcTemplate执行SQL语句
在这里插入图片描述

读取配置

在java bean中,可以通过MagicAPIConfiguration实例获取配置信息,在MagicAPIConfiguration可以根据需要读取指定的配置信息。

即在MagicAPIConfiguration中添加如下代码:

@Configuration
public class MagicAPIConfiguration {
	....
	private int serverPort;

	@Value("${server.port}")
	public void setServerPort(int port) {
		this.serverPort = port;
	}

	public int getServerPort(){
		return serverPort;
	}
	...
}

在这里插入图片描述

测试使用的源码

package org.magic.api.service;

import com.google.common.collect.Maps;
import org.springframework.beans.factory.annotation.Autowired;
import org.ssssssss.example.configuration.MagicAPIConfiguration;
import org.ssssssss.magicapi.core.model.JsonBean;
import org.ssssssss.magicapi.core.service.MagicAPIService;
import org.ssssssss.magicapi.datasource.model.MagicDynamicDataSource;
import org.ssssssss.magicapi.datasource.model.MagicDynamicDataSource.DataSourceNode;

import java.util.List;
import java.util.Map;

public class HiService {
    @Autowired
    MagicAPIService service;

    @Autowired
    MagicDynamicDataSource dynamicDataSource;

    @Autowired
    MagicAPIConfiguration apiConf;

    public static String hi(String name) {
        System.out.println(name);
        return String.format("hi %s", name);
    }

    public String hello(String name){
        return String.format("hello %s",name);
    }

    public List callAPI(){
        Object res = service.call("GET","/test/query", Maps.newHashMap());
        return (List) ((JsonBean) res).getData();
    }

    public List<Map<String, Object>> executeSQL(String sql){
        DataSourceNode dataSourceNode = dynamicDataSource.getDataSource();
        List<Map<String, Object>> res = dataSourceNode.getJdbcTemplate().queryForList(sql);
        return res;
    }

    public int getConf(){
        return apiConf.getServerPort();
    }
}