在对接Alexa Smart Home时,有的请求Payload中需要传入Access Token,但是这个Token是由OAuth2 Client管理的,封装Payload时并不知道Access Token。
所以使用自定义RoundTripper,在请求前取出Header里的token,修改body,实现动态修改payload。
go中可以使用http.DefaultClient进行http请求,也可以自己创建http.Client,传入自定义Transport可以实现对request的处理。
http.Client
http.RoundTripper
我们先写一个server,打印出访问的payload信息。
如果使用默认的DefaultClient,只会打印出我们传入的payload。
结果:
使用自定义Transport
使用自定义Client
最终结果:
我们可以使用http.DefaultClient完成大部分http请求,但是如果我们需要实现一些自定义逻辑时,可以传入http.Client中对应自定义的部分,实现自定义逻辑。
本文中通过修改Transport,读取请求Header,并修改请求Body,动态修改请求Payload。
Original: https://www.cnblogs.com/xpunch/p/15615198.html
Author: xpunch
Title: go 自定义http.Client – 动态修改请求Body
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/516508/
转载文章受原作者版权保护。转载请注明原作者出处!