package main import ( "encoding/json" "log" "net/http" ) type ErrorResponse struct { Message string `json:"message"` StatusCode int `json:"statusCode"` } type SuccessResponse struct { Name string `json:"name"` } func handler(w http.ResponseWriter, r *http.Request) { log.Println("Running handler...") code := getResponseCode(r) w.WriteHeader(code) w.Header().Set("Content-Type", "application/json") if (code != 200) { json.NewEncoder(w).Encode(ErrorResponse{ Message: "There has been an error.", StatusCode: 400, }) } else { json.NewEncoder(w).Encode(SuccessResponse{ Name: "Oliver Davies", }) } } func main() { http.HandleFunc("/", handler) addr := ":" + getPort() log.Printf("Starting server on %s", addr) if err := http.ListenAndServe(addr, nil); err != nil { log.Fatal(err) } }