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

推荐

主流Java进阶技术(学习资料分享)

Java面试题宝典

加入Spring技术开发社区

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!

以上是关于magic-api 快速接口开发的主要内容,如果未能解决你的问题,请参考以下文章

推荐一个 Java 接口快速开发框架

推荐一个 Java 接口快速开发框架,超级nice!

推荐一款 Java 接口快速开发框架,干活快到飞起。。

推荐一款 Java 接口快速开发框架,干活快到飞起。。

SpringBoot 接口快速开发神器(接口可视化界面实现)

帅呆!接口开发不用写ControllerServiceDaoMapperXMLVO,全自动生成