Open SherrillJoyceGit opened 8 months ago
Finally,I do the request method change by writing a lua plugin.
我最近实验修改重写body时,获得一点思路,虽然没有实验希望可以帮到你: 在apisix-core-with-plugin/internal/http/request.go中的(r Request) FetchChanges(id uint32, builder flatbuffers.Builder)的方法里面的hrc.RewriteStart(builder)下面,添加hrc.ReqAddMethod()这个方法,是不是可以实现重写method的方法,因为我加入hrc.RewriteAddBody这个方法后,可以重写body。当然前面要自己定义相关判断是否修改method
I've started a pull request: #151 Features and modifications includes:
Issue description
I need to rewrite the http request method. I think about two ways, but both failed. Way 1. Add a method like "(r *Request) SetPath". As a result , I add a method to Request and call hrc.Req. MutateMethod. It only changes the object of Request.r and does not change the buffer object(generated by flatbuffer which is a rpc solution of google). The program just use the content of buffer object to call the upstream api.
Way 2. Based on way1 , there is no function at HTTPReqCall.Rewrite to change the method. I try to use functions of HTTPReqCall.Req to rebuild the buffer. It does't work and lua problems occurred !
Why:
We have some apis using the Get methods, and the client only use POST methods that can't be changed. Client -> Method(POST) -> configuration in plugins -> Go Runner Plugin -> Method(GET) -> Upstream
screenshots:![image](https://github.com/apache/apisix-go-plugin-runner/assets/43162021/749c9bf5-5a4c-4ebe-9da1-8c315c548977)
Environment
uname -a
): Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux