Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

有没有插件Hook能直接返回我response的数据? #301

Closed
yee94 opened this issue Jul 4, 2019 · 16 comments
Closed

有没有插件Hook能直接返回我response的数据? #301

yee94 opened this issue Jul 4, 2019 · 16 comments

Comments

@yee94
Copy link

yee94 commented Jul 4, 2019

我开发插件的需求目的很简单,就是让请求之后替换一些html内容,但是我看到插件的文档和实例(mock,script)真的好麻烦好麻烦。

也许我不了解node http的缘故,但我真的希望能提供一个hook给我,然后处理完的body内容返回就可以!

@yee94
Copy link
Author

yee94 commented Jul 4, 2019

真的搞不懂koa,stream什么的,调试起来又很不方便,是我打开方式不对吗?我已经折腾2晚上了,目的就是替换页面返回的一段html而已!

@avwo
Copy link
Owner

avwo commented Jul 4, 2019

先看操作响应内容的一些协议能不能满足需要,不行再考虑用插件 https://wproxy.org/whistle/rules/resReplace.html

@yee94
Copy link
Author

yee94 commented Jul 4, 2019

比较特殊,需要插件处理的,我现在理清楚了一些,我可以拿axios+koa在server处理,但是我还是觉得好麻烦,明明可以在resServer那里加个hook就处理掉的

@avwo
Copy link
Owner

avwo commented Jul 4, 2019

了解,周末有空我再把这块文档补全

@yee94
Copy link
Author

yee94 commented Aug 6, 2019

Hello , 这个问题后来您有补充文档吗,大佬?

@avwo
Copy link
Owner

avwo commented Sep 26, 2019

可以通过 resRulesServer 里面的 req.getSession((s) => s && console.log(s.res.body)) 获取

@leimiu
Copy link

leimiu commented Dec 20, 2019

@xiaobebe 你解决了吗?我也遇到同样的问题,想在原请求的Response里面替换一些内容,死活折腾了3天都没搞明白o(╥﹏╥)o

@leimiu
Copy link

leimiu commented Dec 20, 2019

先看操作响应内容的一些协议能不能满足需要,不行再考虑用插件 https://wproxy.org/whistle/rules/resReplace.html

因为需要“动态”处理下,譬如需要加一些判断逻辑,所以直接resReplace可能不是很合适。

@avwo
Copy link
Owner

avwo commented Dec 20, 2019

周末我抽个时间写个例子

@leimiu
Copy link

leimiu commented Dec 20, 2019

期待~

@avwo
Copy link
Owner

avwo commented Dec 20, 2019

最好能把应用场景说明确点,比如通过响应头来决定是如何替换响应内容,尽可能具体些

@leimiu
Copy link

leimiu commented Dec 20, 2019

譬如,原始的http请求:

GET /demo.json HTTP/1.1
Host: tools.3g.qq.com
Connection: Keep-Alive


HTTP/1.1 200 OK
Server: nginx
Date: Fri, 20 Dec 2019 05:54:04 GMT
Content-Type: text/json; charset=utf8-8

{"code":0, "data":{"key1":"original-value"}}

然后,希望插件能够在一定条件下(这里为了方便描述,假如在时间秒为偶数的情况下替换response,譬如13:01:02或者13:01:04),替换后的响应raw如下:

HTTP/1.1 200 OK
Server: whistle-mocker
Date: Fri, 20 Dec 2019 05:54:04 GMT
Content-Type: text/json; charset=utf8-8

{"code":1, "data":{"key1":"mock-value"}}
  • 响应头Server改成whistle-mocker,方便client端进行识别和记录日志
  • 响应体json经过JSON.parse解析后,替换部分内容,再JSON.stingify返回给client,注意这里的body长度可能会改变,所以响应头Content-Length应该也需要变,不知道whistle是不是会自动处理?

@leimiu
Copy link

leimiu commented Dec 24, 2019

@avwo 大佬救急~~

@avwo
Copy link
Owner

avwo commented Dec 24, 2019

已了解你的需求,最近比较忙,有空我再给你写个插件的demo

@avwo
Copy link
Owner

avwo commented Jan 1, 2020

@avwo avwo closed this as completed Jan 1, 2020
@leimiu
Copy link

leimiu commented Jan 2, 2020

感谢大神原来还需要req.request一下新年快乐!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants