Handling request methods: Golang http library

Handling request methods in Golang’s net/http library isn’t as intuitive as you’d expect.

In the request, library there’s a Method field that allows you to see what method a request uses.

func hello(w http.ResponseWriter, req *http.Request) {
  fmt.Fprintln(w, "Hello, world")
}

Starting with the example above, if you want the method to only respond to GET requests, add a conditional statement to make the request respond to only GET requests, and reject non-GET requests.

Take a look at an example of how the code will look after doing this:

func hello(w http.ResponseWriter, req *http.Request) {
  if req.Method == "GET" {
    fmt.Fprintln(w, "Hello, world")
  } else {
    w.WriteHeader(http.StatusMethodNotAllowed)
    fmt.Fprintf(w, "Cannot %s %s", req.Method, req.URL)
  }
}

You can apply this technique to any other type of request method, and you’ll achieve the result you want.