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

接下来,就让我们康康它有哪些功能:

侧边导航工具栏

点击右边的 Forestlogo 小鸟图标,可打开 ForestX 的导航工具栏,它会把项目中定义的 Forest 接口都罗列在一起,方便管理

  • 接口列表分三个层次:最顶层的项目 (目录)、Forest 接口 (小鸟图标)、请求方法
  • 在 Forest 接口列表中,方法名左侧的图标代表了该请求的类型 (GET/POST)
  • 方法名 / 接口的右侧,则是用灰色字体展示的 URL 路径 (一般不是全路径,而是定义在方法上的路径)

代码补全

  1. 根据配置文件中 forest.variables 下定义的全局变量来补全代码

  1. 根据 YAML 配置文件中定义的 YAML 配置项来补全代码

  1. 根据请求方法的 @Var 参数定义来补全代码

  1. 根据 @BindingVar 注解定义的方法来补全代码

  1. 在编程式的代码中,也可出现代码补全的智能提示

不过目前仅对 Forest.getForest.post 等请求方法开放次功能

代码跳转

按住键盘 Ctrl 键,将鼠标移动到 Forest 模板表达式中的标识符上 (比如变量名),并悬停一小段时间,就会跳出该标识符所引用的配置变量或 Java 属性的简短信息

此时点击鼠标左键,即可跳转到该标识符所引用的变量 / 配置的定义代码

结语

程序猿的工作是创造工具,而工具亦可以用来服务程序猿,这是一种正向循环,也是一次次迭代的缩影,正是在一次次的迭代中,程序猿们不断地创造出很好、更完善、更可能改变世界的工具

而 ForestX 的迭代才刚刚开始!

Forest + IDEA = 双倍快乐!ForestX 隆重登场的更多相关文章

  1. Comet OJ - Contest #6 B.双倍快乐(二维最大上升子序列和)

    双倍快乐 题目描述 Illyasviel:"你想要最长不下降子序列吗?" star-dust:"好啊!" Illyasviel:"老板,给我整两个最长 ...

  2. 纯前端表格控件SpreadJS V12.1 隆重登场,专注易用性,提升用户体验

    ​ 一款优秀的开发工具,在更新迭代中,除了要满足不同场景的业务需求,也需不断优化已有功能,尤其是细节方面,要能为用户带来使用体验和开发效率的提升. 作为一款备受业界专家和开发者认可的纯前端类Excel ...

  3. [Git] 017 加一条分支,享双倍快乐

    0. 回顾 [Git] 009 逆转未来 中的 "2.2" 讲过 git checkout -- <file> 这回的 git checkout <branch_ ...

  4. [Git] 019 merge 命令的补充

    回顾:[Git] 017 加一条分支,享双倍快乐 的 "2.3" 1. "Fast-forward" "Git" 在合并分支时会尽可能地使用 ...

  5. 微软新神器-Power BI横空出世,一个简单易用,还用得起的BI产品,你还在等什么???

    在当前互联网,由于大数据研究热潮,以及数据挖掘,机器学习等技术的改进,各种数据可视化图表层出不穷,如何让大数据生动呈现,也成了一个具有挑战性的可能,随之也出现了大量的商业化软件.今天就给大家介绍一款逆 ...

  6. c 线程(平行世界)

    我们已经知道如何使用进程来做一些事情了,然而 它并不是在什么地方都是最适合的. 我们看看进程的缺点是什么: 线程隆重登场 1. 如何创建线程 创建线程可以使用多种线程库,在此我们使用最流行的一种:PO ...

  7. Sprint计划

    团队: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...

  8. Asp.net 面向接口可扩展框架之消息队列组件

    消息队列对大多数人应该比较陌生.但是要提到MQ听说过的人会多很多.MQ就是英文单词"Message queue"的缩写,翻译成中文就是消息队列(我英语差,翻译错了请告知). PS: ...

  9. 算法系列:FFT 003

    转载自https://zhuanlan.zhihu.com/p/19763358 作者:Heinrich 链接:https://zhuanlan.zhihu.com/p/19763358 来源:知乎 ...

  10. 算法系列:FFT 001

    转载自http://blog.csdn.net/orbit/article/details/17210461 2012年9月的时候,一个南京的大学生从电视台播放的一段记者采访360总裁周鸿祎的视频中破 ...

随机推荐

  1. Alertmanager配置概述

    Alertmanager主要负责对Prometheus产生的告警进行统一处理,因此在Alertmanager配置中一般会包含以下几个主要部分: 全局配置(global):用于定义一些全局的公共参数,如 ...

  2. 用VS Code搞Qt 6:Gui基础类型——QGuiApplication和QWindow

    在99.996%的情况下,我们弄 Qt 应用都会使用 QApplication 类和 QWidget 类,即直接用 Widgets 库中的组件/控件.为了方便开发人员自己造轮子,Qt 也提供了一套基础 ...

  3. 《3-D Deep Learning Approach for Remote Sensing Image Classification》论文笔记

    论文题目<3-D Deep Learning Approach for Remote Sensing Image Classification> 论文作者:Amina Ben Hamida ...

  4. PAT (Basic Level) Practice 1028 人口普查 分数 20

    某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 岁的老人,而今天是 2014 ...

  5. sql 中HAVING函数

    select * from <表名> group by<过滤的数据> having <晒选的列名>=<条件> 例 select * from villa ...

  6. oracle中的行转列,列转行

    行转列:源表: 方法1:case when select y,sum(case when q=1 then amt end) q1,sum(case when q=2 then amt end) q2 ...

  7. 如何用AR Engine环境Mesh能力实现虚实遮挡

    在AR应用中,用户最不希望看到不真实的穿模现象发生,如虚拟形象部分身体陷入墙壁之中,或者未碰到墙壁却已无法移动,这种不真实的交互十分影响用户体验.那如何才能让避免虚拟物体的穿模问题呢?使用AR Eng ...

  8. 『现学现忘』Git后悔药 — 32、revert撤销(一)

    目录 1.Git的三种后悔药 2.revert命令原理 3.revert命令的使用 (1)移除某次提交的修改 (2)revert命令说明 1.Git的三种后悔药 在Git中后悔药有三种:amend.r ...

  9. envoy开发调试环境搭建

    image 前段时间研究envoy的filter开发,在windows机器环境上面折腾了会,这里记录一下,希望能够帮助到大家少走一些坑 主要是使用vscode devContainer的方式来搭建开发 ...

  10. IDEA生成带参数和返回值注释

    步骤说明 打开IDEA进入点击左上角 - 文件 - 设置 - 编辑器 - 活动模板 新建活动模板 填写模板文本 编辑变量 添加变量表达式 设置模板使用范围-设置全部范围应用-或者设置只在Java代码中 ...