HTTP Server

Examples Filter
Writing a basic HTTP server is easy using the net/http package.
package main

import (
	"fmt"
	"log"
	"net/http"
)

// A fundamental concept in net/http servers is handlers.
// A handler is an object implementing the http.Handler interface.
// A common way to write a handler is by using the http.HandlerFunc adapter on functions
// with the appropriate signature.
func hello(w http.ResponseWriter, req *http.Request) {

	// Functions serving as handlers take a http.ResponseWriter and a http.Request as arguments.
	// The response writer is used to fill in the HTTP response.
	// Here our simple response is just “hello\n”.
	fmt.Fprintf(w, "hello\n")
}

func headers(w http.ResponseWriter, req *http.Request) {

	// This handler does something a little more sophisticated by reading all the
	// HTTP request headers and echoing them into the response body.
	for name, headers := range req.Header {
		for _, h := range headers {
			fmt.Fprintf(w, "%v: %v\n", name, h)
		}
	}
}

func main() {

	// We register our handlers on server routes using the http.HandleFunc convenience function.
	// It sets up the default router in the net/http package and takes a function as an argument.
	http.HandleFunc("/hello", hello)
	http.HandleFunc("/headers", headers)

	// Finally, we call the ListenAndServe with the port and a handler.
	// nil tells it to use the default router we’ve just set up.
	log.Fatal(http.ListenAndServe(":8090", nil))
}