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

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

侧边导航工具栏

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

tools-window.gif

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

代码补全

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

completion-global-variables.gif

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

completion-yaml.gif

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

completion-var-parameter.gif

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

completion-BindingVar.gif

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

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

completion-forest-api.gif

代码跳转

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

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

结语

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

而 ForestX 的迭代才刚刚开始!


相關推薦

2023-08-31

【直播预告】eBPF 到底是可观测领域的神器 or 鸡肋? Forest介绍 Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL、Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通过调用本地

2024-06-13

大家好,我是你们的小助手OpsPilot,我有一个大大的消息要告诉大家,那就是我已经升级到2.0.0啦!这次的升级可是有很多亮点哦,我现在就来给大家介绍一下。 首先,我整个的架构都进行了重塑,现在我由Munchkin和Pilot两个超

2024-08-16

峰会 GOTC × GOGC 全球开源极客嘉年华于上海张江科学会堂隆重举办。大会现场,开源生态网络共建暨张江节点正式揭牌;世纪互联与开源PHP宣布正式开启战略合作,共同推动智算互联的深化发展。主论坛总体围绕开源生态合作与

2024-10-18

持社区中立。让参与的每一位开源爱好者,体会到开源的快乐。 Dromara 开源社区目前拥有 15+GVP 项目,总 star 数量超过三十万,构建了上万人的开源社区,有成千上万的个人及团队在使用 Dromara 社区的开源项目。 本次 Dromara 社

2023-10-02

Go 轻量 ORM, 零依赖,零侵入分布式事务,支持达梦 (dm), 金仓 (kingbase), 神通 (shentong), 南通 (gbase),TDengine,mysql,postgresql,oracle,mssql,sqlite,db2,clickhouse... 源码:https://gitee.com/chunanyong/zorm 官网: https://zorm.cn 基于原生 sql 语句,学习成

2024-05-05

May the force be with you! 本次发布是计划外发布,按照原定计划v1.2.5 LTS系列的下一个补丁版本在v1.2.6正式发布之后发布。 仅以此次发布庆祝五四青年节! 墨干理工套件包含面向理工科的写作软件墨干,代码编辑器墨码,幻灯

2023-01-21

Go 轻量 ORM, 零依赖,零侵入分布式事务,支持达梦 (dm), 金仓 (kingbase), 神通 (shentong), 南通 (gbase),TDengine,mysql,postgresql,oracle,mssql,sqlite,db2,clickhouse... 源码地址:https://gitee.com/chunanyong/zorm 官网: https://zorm.cn 测试用例 zorm-examples

2023-08-27

8 月 26 日「源创会」北京站,聊聊 AI 大模型与底层技术 >>> 1991 年 8 月 26 日,芬兰大学生 Linus Benedict Torvalds 向 comp.os.minix 新闻组的成员透露了出于 “业余爱好” 而正在研究操作系统的消息。因此这个时间也被许多爱好者视

2023-01-24

各位,新年快乐!洛书开发小组向您拜年了! 版本简介 版本号 1.5.1 类型 beta 定位 过渡版本 洛书1.5是一个激进与稳定并存的过渡版本,如果您是初次使用洛书,推荐直接安装1.5版本以获取最新的更新

2023-04-29

项目信息 Gitee:https://gitee.com/dotnetchina/Furion Github:https://github.com/MonkSoul/Furion 文档:https://furion.baiqian.ltd/ 本期更新 新特性 [新增] 粘土对象支持结构 struct 对象类型 4.8.8.7 ⏱️2023.04.26 a0fa3aa [新

2023-01-17

若依 Cloud 微服务版本 v3.6.2 已发布,更新日志: 重置时取消部门选中 新增返回警告消息提示 忽略不必要的属性数据返回 修改参数键名时移除前缓存配置 开启TopNav没有子菜单隐藏侧边栏 删除fuse无效选项maxPatternLen

2023-04-30

IntelliJ IDEA 2023.1.1 现已发布,这是 v2023.1 的第一个错误修复更新。具体更新内容包括: 在 Linux 上使用 two screens 工作时,IDE 不再 flickers。[ JBR-5417 ] 使用 KDE 时,可以再次在两个显示器之间移动 IDE 的工具窗口

2023-08-25

源创会」北京站,聊聊 AI 大模型与底层技术 >>> IntelliJ IDEA 2023.2.1 现已发布,这是 v2023.2 的第一个错误修复更新。 一些更新亮点如下: 无论是在 WSL 上还是在 Linux 上使用平铺窗口管理器时,都已通过还原到 native header 解

2023-10-29

小米14、澎湃OS等一大波新品已经正式登场。澎湃OS发布前,不少人都争论,它不是小米自研的系统,对此雷军还特意表示,确实不是。 小米的澎湃OS由两部分组成:一部分是基于安卓系统进行深度进化的,这使得澎湃OS可以与安