dromara / fast-request

IntelliJ IDEA plugin Restful Fast Request
https://api-buddy.com/en
Other
455 stars 116 forks source link

如何在前置脚本中使用groovy获取到项目模块对应的application.yaml中配置的端口号 #220

Closed xuguoqin closed 1 year ago

xuguoqin commented 1 year ago

我这里有一个多模块的项目,实现的效果是想只配置一个项目域名,通过脚本直接获取端口号,然后动态替换请求的路径,而不是通过快速生成多个模块的配置,请问下怎么实现从代码中获取spring的配置属性呢 image

kings1990 commented 1 year ago

https://dromara.gitee.io/fast-request/guide/script.html#rfr

image
xuguoqin commented 1 year ago

这几个我试了,我想动态获取的是项目application.yaml中配置的端口号,而不是我已经在插件配置好的端口参数,应该不是同一个东西,可以实现吗

xuguoqin commented 1 year ago

我目前在插件只配置了一个项目project,这个项目里面有多个模块,我想通过获取模块的端口号自动修改url,这样我就能实现只用一个project,不用给每个模块都配置projec,以及请求不同的模块不需要我再去手动切换project

xuguoqin commented 1 year ago

或者说怎样能够获取到当前是哪个模块也是可以的

kings1990 commented 1 year ago

下个版本加上获取API的模块名,同时希望也分享一下你的脚本。群聊

xuguoqin commented 1 year ago

我是想获取模块的端口不是模块名称哦

xuguoqin commented 1 year ago

在使用插件的过程中发现每次都需要我手动去保存请求的参数,不然我每次重新点击请求的时候就重新生成了新的参数,这里可以添加发送以后自动保存的设置吗 还有请求响应的参数是json的话也需要我每次都需要我手动去格式化,但是我想要设置自动格式化这个应该怎样设置呢,或者说可以后续支持吗

kings1990 commented 1 year ago

1.保存api你可以用快捷键,key map可设置 https://dromara.gitee.io/fast-request/guide/getstarted/shortcut.html 2.响应是json是因为idea2023.1造成的会在下个版本修复的。 3.模块端口可在脚本中自己设定规则

kings1990 commented 1 year ago

你的痛点是配置的问题吧,后续我想个方案看看能不能自动配置域名

xuguoqin commented 1 year ago

第一个我确实是用快捷解决了,只是我想的是如果有配置可以支持自动保存就更好了,第二个是bug的话可以修复就行,第三个我已经通过脚本实现了,但是很不优雅,是自己写死的各个模块的端口,我只是觉得要是可以获取到模块接口对应的application.yaml配置的端口就更好了

xuguoqin commented 1 year ago

现在的脚本可以简单贴一下,再本地环境我需要自动通过接口路径调用对应模块,自动配置端口,测试环境走网关ip端口是定死的 @Grab("org.apache.commons:commons-lang3:3.12.0") import org.apache.commons.lang3.StringUtils import cn.hutool.http.HttpRequest import cn.hutool.http.HttpUtil

Map<String, String> configMap = new HashMap<>(); configMap.put("userapi", "localhost:8401"); configMap.put("commonapi", "localhost:8404"); String url = request.getUrl(); if (Objects.equals(rfr.currentEnvName, "local")) configMap.forEach((apiPrefix, host) -> { if (StringUtils.contains(url, apiPrefix)) { String[] split = StringUtils.splitByWholeSeparator(url, apiPrefix); String newUrl = host + "/" + apiPrefix + split[1]; request.setUrl(newUrl); } });

console.print("url: " + request.getUrl() + " 当前环境: " + rfr.currentEnvName);