API 敏捷开发工具
参考文档
https://mp.weixin.qq.com/s?__biz=MzAwMjk5Mjk3Mw==&mid=2247494877&idx=1&sn=f79de6a4e99b2c4d1839b7cc065c768d&chksm=9ac352ffadb4dbe9a89b565bbfb71fa65473ec2aee8cda7c30b5eacb061b61ccfd1e7b41d3d8&mpshare=1&scene=23&srcid=0113CsyEhRe5e01rRkXlfAML&sharer_sharetime=1610587783445&sharer_shareid=9d1e76e919cc0b2f3ca23ed1f5ef67a8#rd
项目的gitee地址
注意:第一个地址可能失效
https://gitee.com/alenfive/rocket-api-doc/wikis/pages
https://gitee.com/alenfive/rocket-api?_from=gitee_search
demo入门实例地址
https://gitee.com/alenfive/rocket-api-demo
具体api地址
https://alenfive.gitbook.io/rocket-api/
快速开始
1. 添加依赖
<dependency>
<groupId>com.github.alenfive</groupId>
<artifactId>rocket-api-boot-starter</artifactId>
<version>2.2.4.RELEASE</version>
</dependency>
2. 数据源配置,继承
配置类
@Component
public class DefaultDataSourceManager extends DataSourceManager {
@Autowired
private JdbcTemplate jdbcTemplate;
@PostConstruct
public void init() {
Map<String,DataSourceDialect> dialects = new HashMap<>();
//通过MysqlDataSource的第二个参数为`true`来表示生成的API信息所存储的库,有且仅有一个为true
dialects.put("mysql",new MySQLDataSource(jdbcTemplate,true));
super.setDialectMap(dialects);
}
}
3. 关系型数据库建表,非关系型不用
导入rocket-api需要的数据库建表脚本到项目的数据库
mysql为例子,下面时建表脚本:
CREATE TABLE `api_info` (
`id` varchar(45) NOT NULL,
`method` varchar(45) DEFAULT NULL,
`path` varchar(100) DEFAULT NULL,
`type` varchar(5) DEFAULT NULL COMMENT '类型:CODE,QL',
`service` varchar(45) DEFAULT NULL,
`group_name` varchar(45) DEFAULT NULL,
`editor` varchar(45) DEFAULT NULL,
`name` varchar(200) DEFAULT NULL,
`datasource` varchar(45) DEFAULT NULL,
`script` text,
`options` text,
`create_time` varchar(45) NULL DEFAULT NULL,
`update_time` varchar(45) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_path_method` (`service`,`path`,`method`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='路径明细';
CREATE TABLE `api_example` (
`id` varchar(45) NOT NULL,
`api_info_id` varchar(45) NOT NULL,
`method` varchar(45) DEFAULT NULL,
`url` text,
`request_header` text,
`request_body` text,
`response_header` text,
`response_body` text,
`status` varchar(10) DEFAULT NULL,
`elapsed_time` int(11) DEFAULT NULL,
`options` text,
`editor` varchar(45) DEFAULT NULL,
`create_time` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_api_id` (`api_info_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模拟数据';
CREATE TABLE `api_info_history` (
`id` varchar(45) NOT NULL,
`api_info_id` varchar(45) NOT NULL,
`method` varchar(45) DEFAULT NULL,
`path` varchar(100) DEFAULT NULL,
`type` varchar(5) DEFAULT NULL COMMENT '类型:CODE,QL',
`service` varchar(45) DEFAULT NULL,
`group_name` varchar(45) DEFAULT NULL,
`editor` varchar(45) DEFAULT NULL,
`name` varchar(200) DEFAULT NULL,
`datasource` varchar(45) DEFAULT NULL,
`script` text,
`options` text,
`create_time` varchar(45) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='路径明细历史';
-- 开启spring.rocket-api.config-enabled: true 才需要此表
CREATE TABLE `api_config` (
`id` varchar(45) NOT NULL,
`service` varchar(45) NOT NULL,
`config_context` text,
PRIMARY KEY (`id`),
UNIQUE KEY `key_UNIQUE` (`id`),
UNIQUE KEY `service_UNIQUE` (`service`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
最新建表脚本查看: 数据库创建脚本
启动项目,访问地址: http://localhost:8080/interface-ui
4.demo实例地址
只需要按以上步骤配置到
https://gitee.com/alenfive/rocket-api-demo
踩坑记录
1.指定项目名称,不然项目启动报错
spring:
application:
name: basic_project
说明:一定要指定项目名称,否则项目启动失败
2.项目的访问网址
项目的访问网址在项目启动后打印在控制台上
测试
1.测试的建表脚本
方便测试期间,我就建一个很简单的表
CREATE TABLE `demo` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '姓名',
PRIMARY KEY (`id`)
);
-- 插入三条测试数据
insert into demo select null , 'root1' from dual;
insert into demo select null , 'root2' from dual;
insert into demo select null , 'root3' from dual;
查看表中数据
MariaDB [basic_project]> select * from demo;
+----+-------+
| id | name |
+----+-------+
| 1 | root1 |
| 2 | root2 |
| 3 | root3 |
+----+-------+
3 rows in set (0.000 sec)
2.测试查询所有
设置
查看api接口明细
3.测试查询一个(按id查询)
语法具体参考
//数量统计,返回Long
return db.count("select count(1) from user");
//返回命中的第一条记录,MAP类型
return db.findOne("select * from user where id = #{id}");
//返回命中的所有记录,返回LIST
return db.find("select * from user");
//插入 返回主键ID,Object类型
return db.insert("insert into user(name) values(#{name})");
//更新 返回更新的数量
return db.update("update user set name=#{name} where id = #{id}");
//删除 返回删除的数量
sql = """
delete from user
where id = #{
id}
"""
return db.remove(sql);
//自动分页
return db.pager("select * from user")
//操作指定数据源
return db.findOne("select * from user where id = #{id}","mysql");
问号传参数的方式
restful传参数的方式
4.插入一条记录返回主键ID
到数据库进行验证
MariaDB [basic_project]> select * from demo where id = 7;
+----+-------+
| id | name |
+----+-------+
| 7 | root7 |
+----+-------+
1 row in set (0.001 sec)
5.条件查询
说明:
正常情况下按条件查询是返回集合的,这边查了id,就是模拟一下,不要台较真
比较
return db.find("select * from demo where id = #{id} and name=#{name}");
return db.findOne("select * from demo where id = #{id}");
/**
结果集中返回集合使用find
结果集是一个json对象,就使用findOne
*/
传入参数为json格式的字符窜,请求方式为post
传入参数试k-v键值对
总结
说明:
其余的用法见官方文档
使用起来还是比较方便的
1.引入依赖
2.写配置类
3.导入插件需要的建表脚本到项目对应的数据库中
结果集是一个json对象,就使用findOne
*/
[外链图片转存中...(img-GLSCgYEf-1612009621821)]
`传入参数为json格式的字符窜,请求方式为post`
[外链图片转存中...(img-GBTW7Jyz-1612009621822)]
传入参数试k-v键值对
[外链图片转存中...(img-xWWJj679-1612009621823)]
## 总结
说明:
> 其余的用法见官方文档
使用起来还是比较方便的
1.引入依赖
2.写配置类
3.导入插件需要的建表脚本到项目对应的数据库中
4.直接访问地址就可以使用rocket-api