Forest + IDEA = 双倍快乐!ForestX 隆重登场
Forest + IDEA = 双倍快乐!ForestX 隆重登场
Forest 是一款声明式的 Java 开源 HTTP 框架,相比它的前辈 Httpclient 和 OkHttp 更简明易懂、也更容易维护
废话不多说,先让我们康康用它写出来的代码长什么样子
public interface AmapClient { /**
* 聪明的你一定看出来了这是一个GET请求
*/
@Get("http://ditu.amap.com/service/regeo?longitude={lng}&latitude={lat}")
Map getLocation(@Var("lng") String longitude, @Var("lat") String latitude);
}
轻轻松松完成了从高德地图获取经纬度所在的地理信息的 Rest API 接口定义,之后只要调用 AmapClient.getLocation
这个 Java 方法即可自动发送 HTTP 请求,并接受响应数据,然后转换成 Map 类型对象再交到你手上
这样做确实比以前手动组装 OkHttp 的 Client 对象、 OkRequest 对象好上很多倍,就算要调用的 HTTP 接口很多、结构再复杂,也不用怕了
但当一个项目中有成千上万个 HTTP 请求要调用,接口的管理和维护成本也会上升到一个吃力的高度
比如哪个接口对应哪个网站平台哪个 URL 往往不能一眼看出、项目中散落的接口具体有哪些也没法一下子就知道
另一个问题是 Forest 中的模板字符串中的占位符可以方便的引用配置文件中定义的变量已经通过 @Var
标签定义的参数,但语法高亮和一个表达式语言应用的基本支持(如代码补全和提示)
这在代码少的时候不算问题,代码接口躲到一定程度,字符串模板中的变量引用写错的概率就大大增加,因为配置也多了,就容易搞不清楚谁再调用谁
这个时候就有请我们今天的主角 ForestX 登场啦~~
专为 Forest 量身定做的 IDEA 插件
ForestX 是一款专为 Forest 提供支持的 IDEA 插件
它能大幅提高您使用 Forest 框架时的开发体验
仓库地址: https://gitee.com/CHMing7/ForestX
接下来,就让我们康康它有哪些功能:
侧边导航工具栏
点击右边的 Forest
logo 小鸟图标,可打开 ForestX
的导航工具栏,它会把项目中定义的 Forest 接口都罗列在一起,方便管理
- 接口列表分三个层次:最顶层的项目 (目录)、Forest 接口 (小鸟图标)、请求方法
- 在 Forest 接口列表中,方法名左侧的图标代表了该请求的类型 (
GET
/POST
) - 方法名 / 接口的右侧,则是用灰色字体展示的 URL 路径 (一般不是全路径,而是定义在方法上的路径)
代码补全
- 根据配置文件中
forest.variables
下定义的全局变量来补全代码
- 根据 YAML 配置文件中定义的 YAML 配置项来补全代码
- 根据请求方法的
@Var
参数定义来补全代码
- 根据
@BindingVar
注解定义的方法来补全代码
- 在编程式的代码中,也可出现代码补全的智能提示
不过目前仅对 Forest.get
、Forest.post
等请求方法开放次功能
代码跳转
按住键盘 Ctrl
键,将鼠标移动到 Forest 模板表达式中的标识符上 (比如变量名),并悬停一小段时间,就会跳出该标识符所引用的配置变量或 Java 属性的简短信息
此时点击鼠标左键,即可跳转到该标识符所引用的变量 / 配置的定义代码
结语
程序猿的工作是创造工具,而工具亦可以用来服务程序猿,这是一种正向循环,也是一次次迭代的缩影,正是在一次次的迭代中,程序猿们不断地创造出很好、更完善、更可能改变世界的工具
而 ForestX 的迭代才刚刚开始!
Forest + IDEA = 双倍快乐!ForestX 隆重登场的更多相关文章
- Comet OJ - Contest #6 B.双倍快乐(二维最大上升子序列和)
双倍快乐 题目描述 Illyasviel:"你想要最长不下降子序列吗?" star-dust:"好啊!" Illyasviel:"老板,给我整两个最长 ...
- 纯前端表格控件SpreadJS V12.1 隆重登场,专注易用性,提升用户体验
一款优秀的开发工具,在更新迭代中,除了要满足不同场景的业务需求,也需不断优化已有功能,尤其是细节方面,要能为用户带来使用体验和开发效率的提升. 作为一款备受业界专家和开发者认可的纯前端类Excel ...
- [Git] 017 加一条分支,享双倍快乐
0. 回顾 [Git] 009 逆转未来 中的 "2.2" 讲过 git checkout -- <file> 这回的 git checkout <branch_ ...
- [Git] 019 merge 命令的补充
回顾:[Git] 017 加一条分支,享双倍快乐 的 "2.3" 1. "Fast-forward" "Git" 在合并分支时会尽可能地使用 ...
- 微软新神器-Power BI横空出世,一个简单易用,还用得起的BI产品,你还在等什么???
在当前互联网,由于大数据研究热潮,以及数据挖掘,机器学习等技术的改进,各种数据可视化图表层出不穷,如何让大数据生动呈现,也成了一个具有挑战性的可能,随之也出现了大量的商业化软件.今天就给大家介绍一款逆 ...
- c 线程(平行世界)
我们已经知道如何使用进程来做一些事情了,然而 它并不是在什么地方都是最适合的. 我们看看进程的缺点是什么: 线程隆重登场 1. 如何创建线程 创建线程可以使用多种线程库,在此我们使用最流行的一种:PO ...
- Sprint计划
团队: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...
- Asp.net 面向接口可扩展框架之消息队列组件
消息队列对大多数人应该比较陌生.但是要提到MQ听说过的人会多很多.MQ就是英文单词"Message queue"的缩写,翻译成中文就是消息队列(我英语差,翻译错了请告知). PS: ...
- 算法系列:FFT 003
转载自https://zhuanlan.zhihu.com/p/19763358 作者:Heinrich 链接:https://zhuanlan.zhihu.com/p/19763358 来源:知乎 ...
- 算法系列:FFT 001
转载自http://blog.csdn.net/orbit/article/details/17210461 2012年9月的时候,一个南京的大学生从电视台播放的一段记者采访360总裁周鸿祎的视频中破 ...
随机推荐
- .env[mode]文件中如何添加注释
前言 Vue-Cli 允许我们在项目根目录创建.env.[mode]文件来设置一些打包编译的启动参数,通过执行脚本的时候加mode参数,指定不同环境需要加载的配置文件 形如: .env.prod NO ...
- nginx反向代理单独的java项目配置示例
# jar包封装成docker镜像启动 docker run -d -v /var/log/xxx:/var/log/xxx --restart=always --network host --nam ...
- proxysql cluster 的搭建
文章转载自:https://blog.51cto.com/lee90/2298804 官方文档: https://proxysql.com/blog/proxysql-cluster 环境架构 在一主 ...
- 在 CentOS 8 上使用 FirewallD 设置防火墙
简介 一个 Linux 防火墙可用于保护您的工作站或服务器免受不需要的流量干扰.您可以设置规则来阻止或允许流量通过.CentOS 8 带有一个动态的.可定制的基于主机的防火墙和一个 D-Bus 接口. ...
- 安装ceph (快速) 步骤一:预检
官网地址:http://docs.ceph.org.cn/start/ 预检 安装一个 ceph-deploy 管理节点和一个三节点的Ceph 存储集群来研究 Ceph 的基本特性.这篇预检会帮你准备 ...
- k8s上安装elasticsearch集群
官方文档地址:https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-quickstart.html yaml文件地址:https://dow ...
- 使用Receiver接收告警信息
告警接收器可以通过以下形式进行配置: receivers: - <receiver> ... 每一个receiver具有一个全局唯一的名称,并且对应一个或者多个通知方式: name: &l ...
- cAdvisor容器监控规则
其他说明参考host主机监控规则:https://www.cnblogs.com/sanduzxcvbnm/p/13589848.html 在prometheus主程序目录下的rules目录下新建do ...
- C#.NET ORM 如何访问 Access 数据库 [FreeSql]
最近很多 .net QQ 群无故被封停,特别是 wpf 群几乎全军覆没.依乐祝的 .net6交流群,晓晨的 .net跨平台交流群,导致很多码友流离失所无家可归,借此机会使用一次召唤术,有需要的请加群: ...
- 小程序uni-app发起网络异步请求
// uni.request({ // url: 'api/boxs/search', // // 使用监听函数防止this指向改变 // success: res => { // // 判断是 ...