본문 바로가기

카테고리 없음

임의의 json body를 받아 로그로 표현해주는 golang 샘플코드

Go 언어(Golang)를 사용하여 임의의 JSON 본문을 받아서 로그로 출력하는 간단한 애플리케이션을 작성하는 것은 HTTP 서버를 설정하고, JSON 데이터를 처리하는 코드를 포함하는 것을 의미합니다. 다음은 이를 수행하는 기본적인 코드 예제입니다:

  1. HTTP 서버 설정: 표준 net/http 패키지를 사용하여 HTTP 서버를 설정합니다.
  2. JSON 처리: encoding/json 패키지를 사용하여 JSON 데이터를 처리합니다.
  3. 로그 출력: log 패키지를 사용하여 로그를 출력합니다.
package main

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

// RequestBody 구조체는 받을 JSON 데이터의 구조를 정의합니다.
type RequestBody struct {
    Data any `json:"data"`
}

func main() {
    http.HandleFunc("/log", logHandler)
    log.Println("Server starting on port 8080...")
    log.Fatal(http.ListenAndServe(":8080", nil))
}

func logHandler(w http.ResponseWriter, r *http.Request) {
    if r.Method != "POST" {
        http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
        return
    }

    var requestBody RequestBody
    if err := json.NewDecoder(r.Body).Decode(&requestBody); err != nil {
        http.Error(w, "Error decoding JSON", http.StatusBadRequest)
        return
    }

    // 로그에 JSON 데이터 출력
    log.Printf("Received JSON: %v\n", requestBody.Data)

    w.WriteHeader(http.StatusOK)
    w.Write([]byte("JSON logged successfully"))
}

이 코드는 /log 엔드포인트로 POST 요청을 받으면, 요청 본문의 JSON 데이터를 RequestBody 구조체로 디코딩하고, 로그로 출력합니다. 서버는 8080 포트에서 실행됩니다. JSON 데이터는 Data 필드로 받게 되어 있으며, 여기에는 어떤 형식의 데이터라도 들어갈 수 있습니다.

이 예제는 기본적인 기능만 제공하므로, 실제 프로덕션 환경에서 사용하기 전에 보안, 오류 처리, 성능 최적화 등을 추가적으로 고려해야 합니다.