接口快速开发框架 magic-api 2.x 进阶--1
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();
}
}
相关文章
- 项目中加入百度地图(调用百度地图的接口)
- 【转】前端验证码倒计时、后台发送验证码、创蓝短信接口
- Callable与Runable接口 submit与execute区别
- IComparable<>,IFormattable,IEnumerable<>接口使用
- 请解释为什么集合类没有实现Cloneable和Serializable接口?
- Python 使用 Tornado Web 框架写HTTP接口实例代码(异步+线程池)
- pytest接口自动化测试框架 | 控制测试用例执行
- pytest接口自动化测试框架 | pytest安装与规则
- pytest接口自动化测试框架 | 修改Python traceback输出
- 《Java虚拟机原理图解》1.3、class文件里的訪问标志、类索引、父类索引、接口索引集合
- 接口测试框架接入性能测试实践分享 | 必读
- 谈谈微服务接口测试中的参数传递
- 通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术
- (02)Cartographer源码无死角解析-(35) PoseExtrapolator→接口解剖,学会框架分析与架构设计
- 【异常】调用SpringBoot接口时提示错误400 Bad Request No required SSL certificate was sent
- 【C++要笑着学】vector 常用接口介绍 | 遍历操作 | 空间操作 | 增删查改
- .NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)