In this article we are going to learn how to build extendable HTTP client for our application while working with multiple external APIs. We will take advantage of http.Client and http.RoundTripper. For the purpose of this article lets assume we are going to work with only two different external APIs. Our HTTP client should let us:
Hi there 👋
Welcome, I am a Senior Software Engineer at Autopilot, a graduate of Computer Science at the Faculty of Electronics, Wrocław University of Science and Technology where I did both my Bachelor and Masters degrees. Full stack software developer with lot of experience. Knowing the highest programming method and cutting edge technologies. I am constantly striving to learn new technologies and looking for ways to better myself in this rapidly changing industry. Beside working full time I am doing open source projects and develop my own applications. I am dedicated to my craft and I am proud of my code. I am trying to write beautiful, efficient code to a high standard, in a timely and scalable way that improves the code-base of products in meaningful ways.
Please look around and leave a comment. Feel free to reach out to me. I am always happy to help!
In this article I am going to show how to profile http service and expose public variables such as operation counters for debugging. We will take advantage of two packages:
RFC 7235 defines the HTTP authentication as follow:
When writing Go HTTP services we might need to perform different logic based on host the request comes from or simply validate host value. We could implement simple host switch mechanism to take care of that.
Often when debugging Go code, errors stack trace is often built with following pattern:
When writing download handler for files most of the times best solution is to use
io.Copy which will handle big part of the logic for us. This works great however what if we need to generate bytes for our response while having the user downloading the file seeing how it is growing when we write to
I have released beta version of my peer-cdn. What I would expect out of this version is feedback on the matter of browser support and the issues I haven’t thing of. This version is released in case of finding out what is need to be done before actual release.