November 2017
Intermediate to advanced
670 pages
17h 35m
English
This is when we actually perform the request. This is when all the decorators are executed:
client := Decorate(proxyTimeoutClient, Authorization("mysecretpassword"), LoadBalancing(RoundRobin(0, "web01:3000", "web02:3000", "web03:3000")), Logging(log.New(InfoHandler, "client: ", log.Ltime)), FaultTolerance(2, time.Second),)
The decorators are executed in order. Authorization goes first, followed by LoadBalancing, Logging, and FaultTolerance.
We create our IoC framework by defining the client interface with a single Do method:
type Client interface { Do(*http.Request) (*http.Response, error)}
Wrap each decorator around a return c.Do(r) statement that fires once the following line is executed in the makeRequest method ...