From 19c1cc9c83467b9b78e8b366ff8952c3d213c9e1 Mon Sep 17 00:00:00 2001 From: Marcus Schiesser <mail@marcusschiesser.de> Date: Wed, 5 Apr 2023 14:06:20 +0800 Subject: [PATCH] added gowww project --- .gitignore | 1 - go.work | 2 ++ src/gowww/client/client.go | 25 +++++++++++++++++++++ src/gowww/client/go.mod | 4 ++++ src/gowww/server/go.mod | 4 ++++ src/gowww/server/server.go | 46 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 src/gowww/client/client.go create mode 100644 src/gowww/client/go.mod create mode 100644 src/gowww/server/go.mod create mode 100644 src/gowww/server/server.go diff --git a/.gitignore b/.gitignore index 7149a5b..34389c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ main -go* *.pb.go .DS_Store diff --git a/go.work b/go.work index 6dc2b0f..0839bc1 100644 --- a/go.work +++ b/go.work @@ -12,3 +12,5 @@ use ./src/gourl use ./src/hello-grpc/client use ./src/hello-grpc/server use ./src/hello-kafka +use ./src/gowww/client +use ./src/gowww/server diff --git a/src/gowww/client/client.go b/src/gowww/client/client.go new file mode 100644 index 0000000..b75aec2 --- /dev/null +++ b/src/gowww/client/client.go @@ -0,0 +1,25 @@ +package main + +import ( + "io" + "log" + "net/http" +) + +const ( + url = "http://localhost:8080/hellowww" +) + +func main() { + log.Printf("Calling service %s\n", url) + resp, err := http.Get(url) + if err != nil { + log.Fatalf("Error reading from %s\n%#v", url, err) + } + defer resp.Body.Close() + body, err := io.ReadAll(resp.Body) + if err != nil { + log.Fatalf("Error reading from %s\n%#v", url, err) + } + log.Printf("Result: %s", body) +} diff --git a/src/gowww/client/go.mod b/src/gowww/client/go.mod new file mode 100644 index 0000000..e5abe28 --- /dev/null +++ b/src/gowww/client/go.mod @@ -0,0 +1,4 @@ +module github.com/turngeek/examples-go/src/gowww/client + +go 1.20 + diff --git a/src/gowww/server/go.mod b/src/gowww/server/go.mod new file mode 100644 index 0000000..ce339c4 --- /dev/null +++ b/src/gowww/server/go.mod @@ -0,0 +1,4 @@ +module github.com/turngeek/examples-go/src/gowww/server + +go 1.20 + diff --git a/src/gowww/server/server.go b/src/gowww/server/server.go new file mode 100644 index 0000000..6d3413c --- /dev/null +++ b/src/gowww/server/server.go @@ -0,0 +1,46 @@ +package main + +import ( + "encoding/json" + "fmt" + "log" + "net/http" + + "github.com/gorilla/mux" +) + +type helloWWWRequest struct { + Name string `json:"name"` +} + +type helloWWWResponse struct { + Message string `json:"message"` +} + +func main() { + port := 8080 + r := mux.NewRouter() + r.HandleFunc("/hellowww", helloWWWHandler).Methods("GET") + r.HandleFunc("/hellowww", helloYouHandler).Methods("POST") + log.Printf("Starting server on port %v\n", port) + log.Fatal(http.ListenAndServe(fmt.Sprintf(":%v", port), r)) +} + +func helloWWWHandler(w http.ResponseWriter, r *http.Request) { + response := helloWWWResponse{Message: "Hello WWW"} + encoder := json.NewEncoder(w) + encoder.Encode(&response) +} + +func helloYouHandler(w http.ResponseWriter, r *http.Request) { + var request helloWWWRequest + decoder := json.NewDecoder(r.Body) + err := decoder.Decode(&request) + if err != nil { + http.Error(w, "Bad Request", http.StatusBadRequest) + return + } + response := helloWWWResponse{Message: "Hello " + request.Name} + encoder := json.NewEncoder(w) + encoder.Encode(&response) +} -- GitLab