Skip to Content
Practical Go
book

Practical Go

by Amit Saha
December 2021
Beginner to intermediate
416 pages
9h 36m
English
Wiley
Content preview from Practical Go

CHAPTER 6Advanced HTTP Server Applications

In this chapter, you will learn techniques that will be useful when you are writing production-quality HTTP server applications. You will start by learning about the http.Handler type, and you will use it to share data across handler functions. Then you will learn how to implement common server functionality as middleware. You will learn about the http.HandlerFunc type and use it to define and chain together middleware. You will end the chapter by looking at a strategy to organize your server application and test the various components. Let's get started!

The Handler Type

In this section, you will learn about the http.Handler type — a fundamental mechanism that enables how HTTP server works in Go. You are now familiar with the http.ListenAndServe( ) function that starts an HTTP server. Formally, the signature of this function is as follows:

func ListenAndServe(addr string, handler Handler)

The first argument is the network address on which to listen, and the second object is a value of type http.Handler defined in the net/http package as follows:

type Handler interface {
        ServeHTTP(ResponseWriter, *Request)
}

Thus, the second parameter of the http.ListenAndServe() function can be any object that implements the http.Handler interface. How do we create such an object? You are now familiar with the following pattern for building an HTTP server application:

mux := http.NewServeMux()
// register handlers with mux
http.ListenAndServe(addr, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Mastering Go - Third Edition

Mastering Go - Third Edition

Mihalis Tsoukalos
Efficient Go

Efficient Go

Bartlomiej Plotka
GitOps Cookbook

GitOps Cookbook

Natale Vinto, Alex Soto Bueno

Publisher Resources

ISBN: 9781119773818Purchase Link