diff --git a/main.go b/main.go index 1dbe562..d58541d 100644 --- a/main.go +++ b/main.go @@ -11,27 +11,44 @@ import ( "time" ) -type response struct { - Field1 string - Field2 string -} - -func main() { - test_response := response{ - Field1: "hi", - Field2: "there", - } - - http.HandleFunc("/foo", func(w http.ResponseWriter, r *http.Request) { - fmt.Println("Hi, ", r.Header) - - result, err := json.Marshal(test_response) +func http_new_route[T any](route string, handle_func func(request *http.Request) (T)) { + http.HandleFunc("/" + route, func(w http.ResponseWriter, r *http.Request) { + result, err := json.Marshal(handle_func(r)) if err != nil { log.Fatal(err) } w.Write(result) }) +} + +func main() { + type foo_response_body struct { + Field1 string + Field2 http.Header + } + foo_route_handler := func(request *http.Request) foo_response_body { + + fmt.Println(request.Header) + + return foo_response_body{ + Field1: "hi there on foo!", + Field2: request.Header, + } + } + http_new_route("foo", foo_route_handler) + + type bar_response_body struct { + Response int + Message string + } + bar_route_handler := func(request *http.Request) bar_response_body { + return bar_response_body{ + Response: 400, + Message: "hi there on bar!", + } + } + http_new_route("bar", bar_route_handler) http_server := &http.Server{ Addr: ":8080",