[go] Go 언어를 사용한 RESTful API의 기본 구조

Go 언어는 간결하면서도 강력한 기능을 갖춘 프로그래밍 언어로, RESTful API 개발에 매우 적합합니다. 이번 블로그 포스트에서는 Go 언어를 사용하여 간단한 RESTful API의 기본 구조를 알아보겠습니다.

1. 프로젝트 구조

Go 언어로 RESTful API를 개발하기 위해 일반적으로 사용되는 디렉토리 구조는 다음과 같습니다:

- main.go
- handler/
  - handler.go
- router/
  - router.go
- model/
  - model.go
- repository/
  - repository.go

여기서는 핸들러 함수, 라우터 및 데이터 모델에 대해서만 자세히 알아보도록 하겠습니다.

2. 핸들러 함수

handler 패키지에는 각 엔드포인트를 처리하는 핸들러 함수들이 정의됩니다. 예를 들어, 사용자 관련 API를 처리하는 핸들러 함수는 다음과 같이 작성할 수 있습니다:

package handler

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

func GetUser(w http.ResponseWriter, r *http.Request) {
    userID := r.URL.Query().Get("id")

    // 데이터베이스에서 userID를 사용하여 사용자 정보를 가져오는 로직

    // 사용자 정보를 JSON 형식으로 반환
    json.NewEncoder(w).Encode(user)
}

핸들러 함수는 http.ResponseWriterhttp.Request를 매개변수로 받으며, 클라이언트로부터 받은 요청을 처리하고 적절한 응답을 반환합니다.

3. 라우터

router 패키지는 API의 라우팅을 관리하고 핸들러 함수와 연결하는 역할을 합니다. 일반적으로 gorilla/mux 패키지를 사용하여 라우터를 구현합니다. 다음은 라우터의 기본 구조입니다:

package router

import (
    "github.com/gorilla/mux"
    "your-project/handler"
)

func NewRouter() *mux.Router {
    router := mux.NewRouter()

    // 사용자 API 엔드포인트
    router.HandleFunc("/user", handler.GetUser).Methods("GET")

    // 라우터 반환
    return router
}

라우터는 mux.Router의 인스턴스를 생성한 후, 핸들러 함수와 엔드포인트를 연결합니다. 이렇게 설정된 라우터는 main.go에서 실행될 것입니다.

4. 데이터 모델

model 패키지는 데이터 모델을 정의하는데 사용됩니다. 예를 들어, 사용자 모델은 다음과 같이 정의할 수 있습니다:

package model

type User struct {
    ID       int    `json:"id"`
    Name     string `json:"name"`
    Email    string `json:"email"`
    Password string `json:"-"`
}

이 데이터 모델은 API에서 사용되는 사용자 정보의 형식을 정의합니다. 필요에 따라 데이터베이스와의 상호 작용을 처리하기 위한 메서드를 모델에 추가할 수도 있습니다.

마무리

이제 Go 언어를 사용하여 간단한 RESTful API의 기본 구조를 알아보았습니다. 핸들러 함수, 라우터 및 데이터 모델을 포함한 프로젝트의 구조를 이해하고 적절하게 사용하여 강력하고 유지 보수하기 쉬운 API를 개발할 수 있습니다.

더 많은 Go 언어와 RESTful API 개발에 대한 내용은 Go 공식 문서와 공개된 여러 레퍼런스를 참고하시기 바랍니다.