Rocket-API 的前世今生

来源: 投稿
作者: 食得落
2020-11-21 11:44:00

在这里插入图片描述
大家好,我是一名资深搬砖工程师,常常忙碌于增查删改中,无法自拔。

我曾:

经历过APIJSON的暧昧

经历过GraphQL的诱惑

经历过DataWay的熏陶

后得大师点醒,为什么不直接搞SQL呢

为什么不直接搞SQL呢…
为什么不直接搞SQL呢…
为什么不直接搞SQL呢…

这来自灵魂的三大暴击,一下子打动了我

那就搞一个? 那就搞一个!

https://gitee.com/alenfive/rocket-api

第一版本

画了个页面,可以在里面写SQL,有点像BI系统,写SQL生成报表。只不过这里的输入是http请求的参数,输出的是数据库查询结果,将SQL保存到数据库里,就像这样:

  1. 配置一下请求方式
  2. 配置一下访问路径
  3. 再写个SQL

在这里插入图片描述

select * from user where id = #{id}

好了,一个接口就这样搞定,保存,试一下 (话外音:这不是一门正经的语言,不用重启)

curl http://localhost:8080/test/fast?id=2

 

[
	{
		"phone": "15828865111",
		"createTime": "2020-05-29 15:44:23",
		"name": "更新",
		"updateTime": "2020-06-24 15:43:06",
		"id": 2
	}
]

第二版本

后来又得大师提点,说,唉,数据不用处理的吗,虽然CURD简单,但,还是有点逻辑的好吧。

刚好,JDK1.8有个新成员 ScriptEngineManager 脚本引擎,他跟Javascript,Python,Ruby,Groovy等等很多语言都有扯不清的关系。挑了一位里面最好的一门语言 “Groovy”(是世界上最好的语言),来解析数据处理逻辑

好了,现在有数据,有逻辑了:

在这里插入图片描述

sql = """sql
select * from user where id = #{id}
"""
user = db.findOne(sql)

user.name = "我是杀手"

return user

保存,再试一下(话外音:Groovy是一门正经的语言,同时也是一门动态编译语言,所以依然不用重启):

curl http://localhost:8080/test/fast?id=2

 

{
	"phone": "15828865111",
	"createTime": "2020-05-29 15:44:23",
	"name": "我是杀手",
	"updateTime": "2020-06-24 15:43:06",
	"id": 2
}

第三版本

后来又得大师提点,说,springboot 是人们的挚爱亲朋,虽然你长得不错,但又有谁会舍得她呢,我虽然常常CURD,但偶尔也有复杂需求的啊,IDEA这么好,复杂的需求,我可是会寸步难行的

有道理!

那能否做到互不影响,相互独立,又能一起共事呢,我知道,他这是想脚踏两只船了,好在springboot 还很开放,早有心里准备

        <dependency>
            <groupId>com.github.alenfive</groupId>
            <artifactId>rocket-api-boot-starter</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>

在这里插入图片描述

https://gitee.com/alenfive/rocket-api

展开阅读全文
精彩评论
嗯,和我想法类似,不光要提供给前端手写SQL的能力,还必须要有一门语言来处理业务,我是直接用Java,参见GoSqlGo项目。从生态来说,个人认为Java要比Groovy、Typescript 等语言强一些。
2020-11-22 09:58
3
举报
给后端用? 后端放着现成的Java/MyBatis/Hibernate不用,用Groovy来写业务逻辑和操作数据库? 略复杂一点的查询,你用Groovy实现不了,是不是又会用回到Java呢? 这样还不如直接用Java
2020-11-22 13:34
1
举报
14 收藏
分享
11 评论
14 收藏
分享
返回顶部
顶部