[go] JSON을 사용한 서버와 클라이언트 통신

Go 언어로 웹 서버를 만들고 클라이언트와 JSON 데이터를 주고받는 것은 매우 간단합니다. 여기에는 Go의 내장된 HTTP 라이브러리와 JSON 패키지를 사용하여 서버와 클라이언트 간 통신하는 방법에 대해 설명하겠습니다.

서버 만들기

먼저, 서버를 만들어 보겠습니다. 아래 예제는 Go로 간단한 웹 서버를 만들고 “/data” 경로로 요청이 오면 JSON 형식의 데이터를 응답하는 방법을 보여줍니다.

package main

import (
	"encoding/json"
	"net/http"
)

type Data struct {
	Message string `json:"message"`
}

func main() {
	http.HandleFunc("/data", func(w http.ResponseWriter, r *http.Request) {
		data := Data{"Hello, World!"}
		w.Header().Set("Content-Type", "application/json")
		w.WriteHeader(http.StatusOK)
		json.NewEncoder(w).Encode(data)
	})

	http.ListenAndServe(":8080", nil)
}

위의 코드는 “/data” 경로에 대한 요청이 들어오면 JSON 데이터를 응답하는 단순한 핸들러를 등록한 것입니다.

클라이언트로 요청 보내기

이제 클라이언트에서 서버에 요청을 보내고 JSON 응답을 처리하는 방법을 살펴보겠습니다.

package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"io/ioutil"
)

type Data struct {
	Message string `json:"message"`
}

func main() {
	resp, err := http.Get("http://localhost:8080/data")
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}

	var data Data
	json.Unmarshal(body, &data)
	fmt.Println("Message:", data.Message)
}

위의 코드는 서버로 HTTP GET 요청을 보내고, 응답으로부터 JSON 데이터를 읽어온 뒤 구조체로 언마샬링하여 데이터를 처리하는 예제입니다.

결론

이렇게 간단한 Go 웹 서버와 클라이언트를 사용하여 JSON 데이터를 주고받는 방법을 알아보았습니다. Go 언어의 내장 HTTP 라이브러리와 JSON 패키지를 사용하면 데이터를 쉽게 주고받을 수 있습니다. JSON을 통한 데이터 교환은 현대적인 웹 애플리케이션에서 흔히 사용되므로, 이러한 방법을 익히는 것은 매우 유용합니다.