[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을 통한 데이터 교환은 현대적인 웹 애플리케이션에서 흔히 사용되므로, 이러한 방법을 익히는 것은 매우 유용합니다.