Go 언어(Golang)를 사용하여 임의의 JSON 본문을 받아서 로그로 출력하는 간단한 애플리케이션을 작성하는 것은 HTTP 서버를 설정하고, JSON 데이터를 처리하는 코드를 포함하는 것을 의미합니다. 다음은 이를 수행하는 기본적인 코드 예제입니다:
- HTTP 서버 설정: 표준
net/http
패키지를 사용하여 HTTP 서버를 설정합니다. - JSON 처리:
encoding/json
패키지를 사용하여 JSON 데이터를 처리합니다. - 로그 출력:
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
필드로 받게 되어 있으며, 여기에는 어떤 형식의 데이터라도 들어갈 수 있습니다.
이 예제는 기본적인 기능만 제공하므로, 실제 프로덕션 환경에서 사용하기 전에 보안, 오류 처리, 성능 최적화 등을 추가적으로 고려해야 합니다.