magic-api 快速接口开发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了magic-api 快速接口开发相关的知识,希望对你有一定的参考价值。
参考技术A magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口。1,引入magic-api-spring-boot-starter依赖
org.ssssssss
magic-api-spring-boot-starter
1.7.1
2,application.yml 中配置
magic-api:
#配置web页面入口
web: /magic/web
resource:
# location: /data/magic-api
type: database # 配置接口存储方式,这里选择存在数据库中
table-name: magic_api_file # 数据库中的表名
3,启动服务,访问magic-api web页面
http://127.0.0.1:8035/magic-test/magic/web
1,RequestParam
GET http://localhost:9999/xxx/xxx?name=abc&age=49
这样的URL参数magic-api 会自动将name和age映射为同名变量
2,表单参数
POST http://localhost:9999/xxx/xxx
name=abc&age=49
这样的表单参数magic-api 也会自动将name和age映射为同名变量。
3,Request Header参数获取
magic-api 会对所有RequestHeader统一封装为一个名为header的变量 如要获取 token 可以通过header.token 来获取。
4,POST请求的Request Body参数获取
"name": "magic-api"
如要获取name属性 则可通过 body.name 来获取
5,Path参数获取
主要是针对URL定义为http://localhost:9999/user/id 的类似接口
如要获取path路径上的id可通过path.id 或 id来获取
6,Cookie,Session参数获取
可以通过cookie.xxx,session.xxx来获取
1,# 注入参数,$ 拼接参数
作用和mybatis用法一致
id = #id;
id=$id;
2,动态SQL参数
通过?condition,expression来实现动态拼接SQL,如果条件成立则拼接后部分内容SQL中,与mybatis中的if标签基本一致
return db.select("select * from sys_user ?id,where id = #id");
相当于mybatis中的
3,Mybatis 语法支持
1.6.0以后的版本支持Mybatis语法
操作入口 db.table('table_name')
1,insert
return db.table('sys_user').insert( user_name : '李富贵', role : 'admin')
// insert into sys_user(user_name,role) values('李富贵','admin')
2,update
return db.table('base_dict').primary('code').update( code: 'insertTerst', name : '测试insert')
//update base_dict set name = ? where code = ?
3,save
用法和insert相似
return db.table('sys_user').primary('id', uuid()).save(user_name: '李富贵');
// insert into sys_user(id,user_name) values('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','李富贵');
4,select,page,where
return db.table('sys_user').select()
return db.table('sys_user').page()
return db.table('sys_user')
.where()
.like('user_name','%李富贵%')
.eq('role','admin')
.select()
yml中配置分页参数
magic-api:
page-config:
size: size # 页大小的请求参数名称
page: page # 页码的请求参数名称
default-page: 1 # 未传页码时的默认首页
default-size: 10 # 未传页大小时的默认页大小
自动分页
使用yml中配置的分页参数
return db.page("""select * from base_dict_detail""")
手动分页
跳过前3条记录,然后取5条
return db.page("""select * from base_dict_detail""",5,3)
自定义分页参数获取
实现 PageProvider接口,复写getPage方法
public Page getPage(RuntimeContext runtimeContext)
long page = 2;
long pageSize = 3;
return new Page(pageSize, (page - 1) * pageSize);
此模式会覆盖yml的配置内容
目前内置了三种状态码,分别为 执行成功(1),参数验证失败(0),以及系统异常(-1)
自定义状态码
magic-api:
response-code-config:
success: 200 #执行成功的code值
invalid: 400 #参数验证未通过的code值
exception: 500 #执行出现异常的code值
默认返回格式
"code": 1, // 状态码
"message": "success", // 状态说明
"data": ..., // 返回的数据内容
"timestamp": 1629610503506, // 服务器时间
"executeTime": 1 // 执行时间
自定义返回格式
magic-api:
response: |- #配置JSON格式,格式为magic-script中的表达式
code: code,
message: message,
data,
timestamp,
requestTime,
executeTime,
自定义结构配置
实现ResultProvider接口,重写buildResult方法
引入swagger依赖
在yml文件中配置
magic-api:
swagger-config:
version: 1.0.0
description: magic测试文档
title: magic测试
name: 配置化实现
location: /v2/api-docs/magic-api/swagger2.json
Magic-api通过springboot自动配置的方式配置了resource,dataSource,interceptor等内容。
在服务启动时,生成MagicConfiguration注入容器时,通过mappingHandlerMapping.registerAllMapping();来注册所有映射(即在界面上配置的接口请求地址和接口的实际处理类、方法的映射)。映射关系注册到handleMapping中,并在内存中通过ConcurrentHashMap来缓存映射关系
接口调用时,在DispatcherServlet中通过url去寻找handler,找到magic-api的统一处理RequestHandler以及处理方法invoke。
在invoke中根据请求方法和路径获取接口信息封装在ApiInfo中,然后进行参数的验证封装。实际脚本的执行,以及对返回结果的包装
推荐一个 Java 接口快速开发框架,超级nice!
点击关注公众号,实用技术文章及时了解
今天给小伙伴们介绍一个Java接口快速开发框架-magic-api
简介
magic-api 是一个基于 Java 的接口快速开发框架,编写接口将通过 magic-api 提供的 UI 界面完成,自动映射为 HTTP 接口,无需定义 Controller、Service、Dao、Mapper、XML、VO 等 Java 对象即可完成常见的 HTTP API 接口开发
访问 http://localhost:9999/magic/web
进行操作
文档地址:https://ssssssss.org
在线演示:https://magic-api.ssssssss.org
特性
支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQLServer 等支持jdbc规范的数据库
支持非关系型数据库Redis、Mongodb
支持集群部署、接口自动同步。
支持分页查询以及自定义分页查询
支持多数据源配置,支持在线配置数据源
支持SQL缓存,以及自定义SQL缓存
支持自定义JSON结果、自定义分页结果
支持对接口权限配置、拦截器等功能
支持运行时动态修改数据源
支持Swagger接口文档生成
基于magic-script脚本引擎,动态编译,无需重启,实时发布
支持Linq式查询,关联、转换更简单
支持数据库事务、SQL支持拼接,占位符,判断等语法
支持文件上传、下载、输出图片
支持脚本历史版本对比与恢复
支持脚本代码自动提示、参数提示、悬浮提示、错误提示
支持导入Spring中的Bean、Java中的类
支持在线调试
支持自定义工具类、自定义模块包、自定义类型扩展、自定义方言、自定义列名转换等自定义操作
快速开始
maven引入
<!-- 以spring-boot-starter的方式引用 -->
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-spring-boot-starter</artifactId>
<version>1.7.1</version>
</dependency>
修改application.properties
server.port=9999
#配置web页面入口
magic-api.web=/magic/web
#配置文件存储位置。当以classpath开头时,为只读模式
magic-api.resource.location=/data/magic-api
项目截图
码云开源地址
https://gitee.com/ssssssss-team/magic-api
推荐
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!
以上是关于magic-api 快速接口开发的主要内容,如果未能解决你的问题,请参考以下文章