From a8b56b50db681318731abbabc388233536e8f314 Mon Sep 17 00:00:00 2001 From: Muyao CHEN Date: Sun, 30 Jun 2024 10:42:57 +0200 Subject: [PATCH] Creating a handler that return JSON --- cmd/web/routes.go | 1 + pkg/handlers/handlers.go | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/cmd/web/routes.go b/cmd/web/routes.go index cefcc09..c30d62d 100644 --- a/cmd/web/routes.go +++ b/cmd/web/routes.go @@ -24,6 +24,7 @@ func routes(app *config.AppConfig) http.Handler { mux.Get("/majors-suite", handlers.Repo.Majors) mux.Get("/reservation", handlers.Repo.Reservation) mux.Post("/reservation", handlers.Repo.PostReservation) + mux.Get("/reservation-json", handlers.Repo.ReservationJSON) mux.Get("/make-reservation", handlers.Repo.MakeReservation) fileServer := http.FileServer(http.Dir("./static/")) diff --git a/pkg/handlers/handlers.go b/pkg/handlers/handlers.go index 50fe408..f3430d9 100644 --- a/pkg/handlers/handlers.go +++ b/pkg/handlers/handlers.go @@ -1,10 +1,12 @@ package handlers import ( + "encoding/json" "fmt" "go-udemy-web-1/pkg/config" "go-udemy-web-1/pkg/models" "go-udemy-web-1/pkg/render" + "log" "net/http" ) @@ -80,3 +82,25 @@ func (m *Repository) PostReservation(w http.ResponseWriter, r *http.Request) { end := r.Form.Get("end") fmt.Fprintf(w, "Posted to search availability from %s to %s", start, end) } + +type responseJSON struct { + OK string `json:"ok"` + Message string `json:"message"` +} + +// MakeReservation is the make reservation page handler +func (m *Repository) ReservationJSON(w http.ResponseWriter, r *http.Request) { + resp := responseJSON{ + OK: "true", + Message: "Available!", + } + + out, err := json.MarshalIndent(resp, "", " ") + if err != nil { + log.Println(err) + } + + w.Header().Set("Content-Type", "application/json") + + w.Write(out) +}