I offered a PR on alice (which is a middleware library for the handlers)
that does that. It's essentially an application of the same pattern. We're
getting a lot of mileage for this.
On Tuesday, March 6, 2018 at 6:41:53 AM UTC-8, Eyal Posener wrote:
> Good stuff,
> So I see that this library wraps the http.Client and doesn't use the
> Pretty elegant!
> I still have two questions about the standard library:
> - Didn't understand yet why it is not allowed to add headers in the
> - Is this a bit strange that the standard library provides a beautiful
> way to have server middleware, but no way to have client middlewares?
> On Tuesday, March 6, 2018 at 2:57:57 AM UTC+2, Bojan Delić wrote:
>> 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
>> 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
>> On Monday, March 5, 2018 at 3:03:14 PM UTC+1, Eyal Posener wrote:
>>> 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"
>>> 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?
You received this message because you are subscribed to the Google Groups
To unsubscribe from this group and stop receiving emails from it, send an email
For more options, visit https://groups.google.com/d/optout.