📘 Go 언어 20강 - 회원제 REST API 실습
이번 시간엔 회원 등록, 회원 목록 조회 등의 REST API를 직접 구현해보며 실전 감각을 익힙니다.
gorilla/mux를 기반으로 작성하며, 구조체와 슬라이스를 이용한 간단한 인메모리 DB도 다룹니다.
1️⃣ 회원 구조체 정의
type Member struct {
ID int `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
}
2️⃣ 인메모리 저장소와 기본 데이터
var members = []Member{
{ID: 1, Name: "홍길동", Email: "hong@example.com"},
}
3️⃣ 회원 목록 조회 핸들러
func getMembers(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(members)
}
4️⃣ 회원 등록 핸들러
func createMember(w http.ResponseWriter, r *http.Request) {
var newMember Member
if err := json.NewDecoder(r.Body).Decode(&newMember); err != nil {
http.Error(w, "잘못된 요청", http.StatusBadRequest)
return
}
newMember.ID = len(members) + 1
members = append(members, newMember)
w.WriteHeader(http.StatusCreated)
json.NewEncoder(w).Encode(newMember)
}
5️⃣ 라우팅 구성
r := mux.NewRouter()
r.HandleFunc("/members", getMembers).Methods("GET")
r.HandleFunc("/members", createMember).Methods("POST")
http.ListenAndServe(":8080", r)
💡 예제: curl 테스트
# 전체 회원 조회
curl http://localhost:8080/members
# 회원 등록
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"이순신", "email":"lee@navy.kr"}' \
http://localhost:8080/members
🧠 요약
GET /members
: 전체 회원 목록 JSON으로 응답POST /members
: JSON 요청 받아 신규 회원 추가- 슬라이스를 DB처럼 사용하여 간단하게 구현
한 줄 요약: "슬라이스 기반 REST API로 CRUD 기본기를 익히자!"