没想到吧,Java开发 API接口可以不用写 Controller了
大家好,我是小富~
今天介绍我正在用的一款高效敏捷开发工具magic-api
,顺便分享一点工作中使用它的心得
缘起
先说一下我为什么会使用这个工具?
最近新启动一个项目,业务并不算复杂,那种典型的管理系统,产品要求支持全局页面配置化,前端一切相关配置必须通过接口返回,比如:像查询下拉框(启用、禁用)这类简单的条件,国际化,必须做到全动态配置。
其实只要人手够时间够,这些都没问题,但问题就在于立项到上线周期就给十几天,而开发时间满打满算不到10来天,时间紧又不给加人,底层程序员的生活真是太难了。
不过办法总比困难多,前同事老哥给我推荐了这个工具,然后就真香了,哈哈~
magic-api
是一个基于Java的接口快速开发框架,编写接口将通过magic-api
提供的UI
界面完成,自动映射为HTTP接口,无需定义Controller
、Service
、Dao
、Mapper
、XML
、VO
等Java对象即可完成常见的HTTP API接口开发。
上边是官方对工具的介绍,但好像还是没明白它是干什么的,接下来咱们演示一下,你就会觉得它很哇塞了
环境
首先pom.xml
引入magic-api
核心包magic-api-spring-boot-starter
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-spring-boot-starter</artifactId>
<version>0.7.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
application.yml
配置更简单,数据库(没数据库操作可以不写)和magic-api
的基础信息
magic-api:
web: /magic/web # UI请求的界面以及UI服务地址
server:
port: 9999
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
password: xinzhifu521
url: jdbc:mysql://47.93.6.5:3306/magic-api
username: root
好了~ 到这环境就搭建完成!
在具体演示之前先吐槽一下用Java开发API的缺点,首当其冲的就是啰嗦,尤其是在工期紧,功能需快速迭代的时候,既要严格执行开发规范,又不能耽误工期,即便最简单的一个API接口,也要写对应的 Controller
、Service
、Dao
、Mapper
、DTO
、VO
等类,尽管这些基础编码有对应的代码生成器,但维护起来还是相当麻烦,magic-api
起到一个很好的辅助作用,少写了很多代码。
实践
直接访问http://127.0.0.1:9999/magic/web
打开magic-api
可视化界面,看到如下的界面。
创建一个分组,其中分组前缀
为一组API接口的访问根目录,相当于@Controller("/order")
注解。
接着在分组中创建接口 order_detail
,页面配置接口的基础信息,接口名称、请求路径、请求方法、请求参数、请求header等,接口直接return
返回内容
return ‘小富最帅’
在页面访问刚刚创建接口的全路径 http://127.0.0.1:9999/order/order_detail
,发现已经成功返回数据。
也可以直接拼JSON
格式数据直接返回
如果URL传参 /order_detail/{id}
,导入request
模块获取参数
import request;
a = path.id
到这一个简单的API接口就开发完了,而此时我们还未在项目中写一行代码
但上边只是静态数据,在实际开发中往往要与数据库打交道,magic-api
提供了一些类似于python
开发中的模块化组件,例如引入import db
模块,直接执行SQL
语句会返回JSON
格式数据,省略了很多中间步骤。
magic-api
语法与Java
的差异不大,不过更加精简了一些,只要写过Java对它学习成本并不高,比如常用得for
循环,也会有普通和lambda
多种写法。
var sum = 0;
var list = [1,2,3,4,5];
for(val in list){
sum = sum + val;
}
list.each(it => sum+= it + 1)
这里我只简单的介绍了使用,还有很多高级特性,比如:调用Java API
、集成redis
、Mongo
等,感兴趣的同学自己看下官方文档吧,它还提供了很多语法demo
,拿来即用就好。
地址:http://140.143.210.90:9999/magic/web/index.html
心得
magic-api
在我整个项目赶工期的过程中可谓是居功至伟,节省了一大半的开发时间,不仅后端开发接口效率显著提升,对前端联调帮助也很大。
前后端从开始就定义好数据结构,后端快速提供静态数据接口,前端用真实接口联调,后端补充完业务逻辑后无缝替换成真实数据,这样做到同步开发,前端也不用只写伪代码等接口联调了。
magic-api
虽然可以提高开发效率,但是实际应用中我也只敢把它用在一些逻辑相对简单,偏配置类接口,再有就是为前端快速提供静态接口,核心业务还是要按“规矩”办事,毕竟系统稳定、安全才是最重要的。
整理了几百本各类技术电子书,有需要的同学公号[ 程序员内点事 ]内回复[ 666 ]自取。技术群快满了,想进的同学可以加我好友,和大佬们一起吹吹技术。
没想到吧,Java开发 API接口可以不用写 Controller了的更多相关文章
- 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
为了方便大家使用ZCELL,应网友要求,整理编写了相关文档,现与产品一起同步发布,供大家下载使用,使用过程中如有疑问,请与我QQ联系. 智表(ZCELL)V1.4.0版本 功能清单文档下载地址: 功 ...
- 简单天气应用开发——API接口
寒假回家无事,想到自学iOS开发已有一段时间,还没做过真正自己的应用,就起了做一个天气预报App的念头. 想到就做.天气预报第一步自然是找到好用的API接口来获取天气信息.在百度上搜索了一圈,找到的都 ...
- jeecg的开发api接口之旅(http)
一.接口测试工具 1.postman下载地址:https://download.csdn.net/download/qq_35792159/11898005 2.谷歌浏览器插件:https://www ...
- php开发api接口
做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...
- PHP开发api接口安全验证
php的api接口 在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道 ...
- 个人微信号二次开发SDK协议,个人微信号二次开发api接口
通过这个API接口可以做什么? 通过我们提供的API接口您可以开发: 工作手机(如:X创,X码,XX管家等) 微信群讲课软件(如:讲课X师,一起X堂等) 微信社群管理软件(如:小X管家,微X助手等) ...
- 个人微信二次开发API接口
通过这个API接口可以做什么? 通过我们提供的API接口您可以开发: 工作手机(如:X创,X码,XX管家等) 微信群讲课软件(如:讲课X师,一起X堂等) 微信社群管理软件(如:小X管家,微X助手等) ...
- PHP开发api接口安全验证的实例,值得一看
php的api接口 在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道 ...
- PHP开发api接口安全验证方法一
前台想要调用接口,需要使用几个参数生成签名.时间戳:当前时间随机数:随机生成的随机数 签名:特定方法生成的sign签名 算法规则在前后台交互中,算法规则是非常重要的,前后台都要通过算法规则计算出签名, ...
随机推荐
- web effects collection
web effects collection typewriter effect js 打字机效果 http://www.mattboldt.com/demos/typed-js/ https://g ...
- node.js 如何处理一个很大的文件
node.js 如何处理一个很大的文件 思路 arraybuffer 数据分段 时间分片 多线程 web workers sevice workers node.js 如何处理一个很大的文件 http ...
- taro demos & taro 组件库
taro demos & taro 组件库 ui demo https://github.com/qit-team/taro-yanxuan https://github.com/fengch ...
- [转]ROS中使用message_filters进行多传感器消息同步
转:http://www.rosclub.cn/post-1030.html 最近实验室老师在做一个多传感器数据采集实验,涉及到了消息同步.所以就学习了ROS官网下的消息同步工具message_fil ...
- 翻译:《实用的Python编程》02_04_Sequences
目录| 上一节 (2.3 格式化) | 下一节 (2.5 Collections模块) 2.4 序列 序列数据类型 Python 有三种序列数据类型. 字符串:如 'Hello'.字符串是字符序列 列 ...
- linux系统解压命令总结
原文链接:https://www.cnblogs.com/lhm166/articles/6604852.html tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追 ...
- springboot项目打包成jar包在Linux服务器默认80端口运行
springboot项目端口设置 在application.properties文件 server.port=80 在application.yml文件 server: port: 80 然后在ide ...
- spring boot +dubbo 踩坑记录
今天初次搭建spring boot +duboo的demo.记录一下踩坑记录. 首先搭建3个小demo,一个maven项目,两个spring boot (服务提供者和服务消费者)项目. 两 sprin ...
- Semaphore实战
简介 Semaphore信号量计数器.和CountDownLatch,CyclicBarrier类似,是多线程协作的工具类,相对于join,wait,notify方法使用起来简单高效.下面我们主要看看 ...
- GNS3通过“云”连接到虚拟机实验
GNS3通过"云"连接到虚拟机实验并使用wireshark工具对数据分析 观看本文之前注意!!!!! 做这次实验,我所遇到的问题,会全部写在文章结尾,如果读者们遇到问题,可查看. ...