开始
关于 magic-api
简介的话,就不多说了,咱们可以直接通过官网的文档进行查看,点击跳转官网。我们此次使用的是 springboot+magic-api
进行简单的接口配置,我们先来看一下最后的效果:
springboot项目环境的配置
首先我们需要创建一个 springboot
项目,在项目中安装我们所需要的依赖,包括 swagger-ui
的以及 magic-api
所需的所有依赖,如下:
<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-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 以spring-boot-starter的方式引用 -->
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-spring-boot-starter</artifactId>
<version>1.7.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</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>
magic-api + swagger + 数据库(application.properties配置)
magic-api相关配置
magic-api
提供了两个api:magic-api.web
magic-api.resource.location
。
-
magic-api.web
控制在浏览器地址中的地址前缀,例如:magic-api.web: /magic/web # http://localhost:9999/magic/web/index.html
-
magic-api.resource.location
属性则是说明 api 文件的存储的位置,他存储了后期我们在浏览器配置的接口的一系列信息,在这个地址配置中,没有找到关于它的详细介绍,下面的一段只是作者的理解,可能存在误解,欢迎在评论区指出,项目所在磁盘的根目录开始:- 在
mac
下,直接使用文件夹路径即可; - 在
windows
下,如果项目在E
盘,我们对应的根目录就是E盘的根目录
,这里填写对应的存储的根目录的绝对位置
; - 如果后期将配置的文件
部署到服务器
,需要将地址改为服务器的文件夹路径,然后把配置的文件上传到目标文件夹(只尝试了以本地计算机为服务器,局域网进行访问),把jar
挂载在服务器即可。
以 mac 为例:
magic-api.resource.location: /Users/wangtx/Desktop/magic-api-data
- 在
数据库连接
关于数据库的连接,就不用多说了,需要配置连接数据库所需的 驱动
,数据库地址
,用户名
,密码
:
spring.datasource.driver-class-name: com.mysql.cj.jdbc.Driver
spring.datasource.url: jdbc:mysql://127.0.0.1:3306/my_blog?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.username: root
spring.datasource.password: 12345678
swagger-ui
在这里,主要配置的是版本
、描述
、标题
、名称
、位置
、版本兼容
,这里需要注意的是 location
,这里是 magic-api
导出的接口文件的地址,也就是本文说的 magic-api.resource.location
下的 api 的子目录,当我们配置完接口之后,会生成一个 group.json
的文件,对配置的接口进行一个组关联,这里的 location
即为该 json
的目录。配置如下:
magic-api.swagger-config.version = 1.0
magic-api.swagger-config.description = wangtx
magic-api.swagger-config.title = MagicAPI wangtx
magic-api.swagger-config.name = MagicAPIwangtx
magic-api.swagger-config.location = /Users/wangtx/Desktop/magic-api-data/api/dev_test/group.json
spring.mvc.pathmatch.matching-strategy: ant_path_matcher
关于 group.json
位置及目录结构如下:
说明
/Users/wangtx/Desktop/magic-api-data
是我们在上面配置的接口导出的目录,导出的目录下,有三个文件夹,分别是 api
、function
、datasource
,我起的组的名称是 dev_test
,因此导出的 group.json
位置如上图所示。
项目启动
我们配置完上面的部分,就可以启动项目了,启动完成之后,会有三个地址:
- 第一个地址是本地调试使用
- 第二个地址为局域网内的 ip+端口,可提供他人调取
- 第三个接口是局域网配置接口地址
- swagger 的地址是 ip+端口+swagger-ui.html,例如:http://127.0.0.1:9999/swagger-ui.html
接口配置
-
首先我们需要添加一个分组来存储接口,如下图所示:
-
在组中右键新建接口:
-
接口信息完善
增删改查示例
查询
// return db.select(""" select * from my_blog.user_info where userName like concat('%',#{userName},'%') """);
// 多条件查询
// where 1 = 1 可写作 true,作为基础查询校验
return db.page("""
select * from my_blog.user_info where 1 = 1
?{id, and id = #{id}}
?{userName, and userName like concat('%',#{userName},'%')}
?{loginName, and loginName like concat('%',#{loginName},'%')}
""");
删除
// 物理删除
// return db.update("""delete from my_blog.user_info where id = #{id} """)
// 逻辑删除
db.update(""" update my_blog.user_info set deleteStatus = 1 where id = #{id} """)
新增
// insert into my_blog.user_info(user_name,role) values('李富贵','admin')
return db.table('user_info').primary('id', () => uuid()).insert({
"userName": body.userName,
"loginName": body.loginName,
"password": body.password,
"idNumber": body.idNumber,
"headerImg": body.headerImg
})
修改
// db.update(""" update my_blog.user_info set userName = #{body.userName} where id = #{body.id} """)
return db.table('my_blog.user_info').primary('id').update(body)