From 9a9d8818cad7bd350bd5e29b463e72f800af9391 Mon Sep 17 00:00:00 2001
From: Marcus Schiesser <mail@marcusschiesser.de>
Date: Thu, 13 Apr 2023 11:54:51 +0200
Subject: [PATCH] implement POST request for gowww client

---
 src/gowww/client/client.go | 28 ++++++++++++++++++++++------
 1 file changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/gowww/client/client.go b/src/gowww/client/client.go
index b75aec2..67039e8 100644
--- a/src/gowww/client/client.go
+++ b/src/gowww/client/client.go
@@ -1,7 +1,8 @@
 package main
 
 import (
-	"io"
+	"bytes"
+	"encoding/json"
 	"log"
 	"net/http"
 )
@@ -10,16 +11,31 @@ const (
 	url = "http://localhost:8080/hellowww"
 )
 
+type helloWWWRequest struct {
+	Name string `json:"name"`
+}
+
+type helloWWWResponse struct {
+	Message string `json:"message"`
+}
+
 func main() {
-	log.Printf("Calling service %s\n", url)
-	resp, err := http.Get(url)
+	log.Printf("Client is sending a request to %v\n", url)
+	request := helloWWWRequest{Name: "Marcus"}
+	data, err := json.Marshal(&request)
 	if err != nil {
-		log.Fatalf("Error reading from %s\n%#v", url, err)
+		log.Fatalf("Error while marshalling request: %v", err)
+	}
+	resp, err := http.Post(url, "application/json", bytes.NewBuffer(data))
+	if err != nil {
+		log.Fatalf("Error while sending request %s: %v", url, err)
 	}
 	defer resp.Body.Close()
-	body, err := io.ReadAll(resp.Body)
+	decoder := json.NewDecoder(resp.Body)
+	var response helloWWWResponse
+	err = decoder.Decode(&response)
 	if err != nil {
 		log.Fatalf("Error reading from %s\n%#v", url, err)
 	}
-	log.Printf("Result: %s", body)
+	log.Printf("Message: %s", response.Message)
 }
-- 
GitLab