As far as I am aware, there is very little information about best practices 
regarding client side middlewares. 

I though that having such support is neat idea and I have implemented 
something (that I use for some time now, though still in beta) that you 
might find useful for your use case. I have written small library that 
describes client middleware protocol <https://github.com/delicb/cliware>, 
some useful middlewares <https://github.com/delicb/cliware-middlewares> and 
HTTP 
client <https://github.com/delicb/gwc> that's using these libraries. 

This might solve your problem directly (writing new middleware is trivial), 
but it might introduce dependency that you don't want, so I hope this will 
provide inspiration on how you would do something similar yourself. 

On Monday, March 5, 2018 at 3:03:14 PM UTC+1, Eyal Posener wrote:
>
> Hi
>
> I want to implement a client middleware - for example: sign the request 
> body and add the signature as an HTTP header.
> I thought that the best way to do it is to implement a RoundTripper 
> interface <https://golang.org/pkg/net/http/#RoundTripper> which up on 
> request, calculate the signature, adds the header, and invoke a "next" 
> ToundTripper.
>
> This could be a very generic implementation, which i can inject to any 
> client that uses the standard library http.Client.
>
> However, I found the following in the doc:
>
>         // RoundTrip should not modify the request, except for
>         // consuming and closing the Request's Body. RoundTrip may
>         // read fields of the request in a separate goroutine. Callers
>         // should not mutate the request until the Response's Body has
>         // been closed.
>
>
> Is there a standard way to do it?
>
> Thanks,
> Eyal
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to