qd-today / qd

QD [v20240210] —— HTTP请求定时任务自动执行框架 base on HAR Editor and Tornado Server
https://qd-today.github.io/qd/
MIT License
4.46k stars 577 forks source link

[Feature] 支持框架往模板动态注入api base #348

Closed dabuside closed 1 year ago

dabuside commented 1 year ago

Verify steps

Describe the Feature

大部分HAR模板中硬编码了内置的常用api地址http://localhost/util/delay/15。 如 b站har

根据部署说明,这个工具函数api的地址和部署方式有关系。

在大部分已部署好的签到站 https://qiandao.a76yyyy.cn/ 中,需要将模板中的http://localhost 更改为 http://localhost:8923 才可使用。

否则会出现下列的失败日志

Failed at 3/16 request,
Fail assert: {"re": "200", "from": "status"} from success_asserts,
Response Error : HTTP 404: Not Found,
Request URL: http://localhost/util/delay/15

QianDao 框架本身并没有提供这样的统一修改入口,每次添加含有内置API的模板时候,均需要手动下载HAR替换后上传。比较麻烦。并且更改HAR源码后,若对应的站点更改了部署方式,采用80端口,则修改HAR的重新签到会失效。

Describe the solution

web增加一个全局配置API_BASE,默认值为http://localhost 用户可以动态修改HAR模板执行时候的api前缀 如配置为http://localhost:8923或者https://qiandao.a76yyyy.cn/

  1. 兼容性优先 由于HAR文件可能需要在老版本框架中运行,修改格式可能会导致老版本无法运行,在保留原har格式的情况下 每次执行HAR模板文件的时候,对其中的url字段进行正则替换 http:\/\/localhost:?[\d]{0,5} -> http://localhost:8923

  2. 语义优先 增加一个模板引擎过滤器 apibase,将任意字符转换为用户配置的API_BASE HAR中url字段为{{ 'api_base' | apibase }}/util/delay/15 -> http://localhost:8923/util/delay/15 统一修改已有HAR文件格式 缺点:新HAR不能在老版框架中运行

Describe alternatives

No response

Additional context

No response

a76yyyy commented 1 year ago

请问是否还有问题呢

dabuside commented 1 year ago

请问是否还有问题呢

我看到,template已经更新了。但是ui界面拉取的公共模板还没有更新。bili订阅HAR

image image

a76yyyy commented 1 year ago

请问是否还有问题呢

我看到,template已经更新了。但是ui界面拉取的公共模板还没有更新。

cdn缓存有24h, 大概明天应该就可以了

a76yyyy commented 1 year ago

如果没有问题就close这个issue吧

dabuside commented 1 year ago

框架已有功能支持这个动态的apibase; api://开头即代表动态base 默认的模板库也已经修改成api://开头了 https://github.com/qiandao-today/templates/commit/5183e94dee018c51974c03259d1596878b1e2c52