**목적:** 이 예제는 Go 언어를 사용하여 기본적인 RESTful API 서버를 구축하고, 사용자 데이터를 저장하고 관리하는 방법을 보여줍니다. CRUD (Create, Read, Update, Delete) 기능을 구현하여 데이터베이스와의 상호 작용을 경험할 수 있습니다.
**사용 시나리오:** 사용자는 HTTP 요청을 통해 API 서버에 접속하여 새로운 사용자 정보를 생성(Create), 기존 사용자 정보를 조회(Read), 특정 사용자 정보를 수정(Update), 또는 삭제(Delete)할 수 있습니다. API 서버는 JSON 형식으로 데이터를 주고받습니다.
**결과:** 이 예제에서는 간단한 데이터베이스 (in-memory storage)를 사용하여 사용자 데이터를 관리합니다. 실제 운영 환경에서는 MySQL, PostgreSQL 등 관계형 데이터베이스나 MongoDB와 같은 NoSQL 데이터베이스를 사용해야 합니다. API 서버는 HTTP 요청을 처리하고 JSON 응답을 반환하여 클라이언트에게 결과를 제공합니다.
🐹 Go로 간단한 REST API 서버 구축: 사용자 데이터 관리
Go 예제
초급
난이도
예제
타입
10/12
등록일
Go로 간단한 REST API 서버 구축: 사용자 데이터 관리
초급코드 예제
#!/usr/bin/env go
import ("
"fmt"
"log"
"net/http"
"encoding/json"
)
// 사용자 데이터 구조체
type User struct {
ID string `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
}
// 사용자 데이터 저장소 (in-memory)
var users = []User{}}
// 새로운 사용자를 생성하는 핸들러
func createUser(w http.ResponseWriter, r *http.Request) {
// 요청 본문 파싱
var user User
err := json.NewDecoder(r.Body).Decode(&user)
if err != nil { // 에러 처리
log.Println("에러: 사용자 데이터 파싱 실패", err) // 로깅
http.Error(w, "에러: 유효하지 않은 사용자 데이터", http.StatusBadRequest) // HTTP 에러 응답
return
}
// 사용자 ID 생성 (간단한 예시)
user.ID = fmt.Sprintf("user-%d", time.Now().UnixNano())
// 사용자 데이터 저장
users = append(users, user)
fmt.Fprintf(w, "사용자 %s 생성 성공! ID: %s
", user.Name, user.ID)
}
// 사용자를 조회하는 핸들러
func getUser(w http.ResponseWriter, r *http.Request) {
// URL에서 사용자 ID 추출
userID := r.URL.Query().Get("id")
// 데이터베이스에서 사용자 찾기 (in-memory)
for _, user := range users {
if user.ID == userID { // ID 매칭
json.NewEncoder(w).Encode(user)
return
}
}
// 사용자를 찾을 수 없는 경우
http.Error(w, "사용자를 찾을 수 없음", http.StatusNotFound)
}}
// 모든 사용자를 조회하는 핸들러 (테스트용)
func getAllUsers(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(users)
}
// API 엔드포인트 정의
func main() { // 프로그램 시작
http.HandleFunc("/users/create", createUser)
http.HandleFunc("/users/", getUser)
http.HandleFunc("/users/all", getAllUsers)
fmt.Println("서버가 8080 포트에서 실행 중...")
http.ListenAndServe(":8080", nil)
}
등록일: 2025년 10월 12일 19:43
언어 정보
언어
Go
카테고리
System
인기도
#8
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요