[go] Go 언어를 사용한 RESTful API의 필터링 및 정렬 처리

RESTful API를 개발할 때, 클라이언트 요청에 따라 데이터를 필터링하고 정렬하는 기능이 필요합니다. Go 언어를 사용하여 이러한 요구사항을 수행하는 방법에 대해 알아보겠습니다.

API 엔드포인트 구성

먼저, API 엔드포인트를 구성해야 합니다. 예를 들어, /users 엔드포인트를 가진 RESTful API를 만든다고 가정해보겠습니다. 사용자들의 목록을 조회하고, 필터링 및 정렬 기능을 제공할 수 있어야 합니다.

필터링 처리

쿼리 파라미터 활용

클라이언트로부터 전달되는 쿼리 파라미터를 사용하여 데이터를 필터링할 수 있습니다. 예를 들어, /users?gender=female과 같은 요청을 받았을 때, gender 쿼리 파라미터의 값이 female인 사용자들만 조회하도록 할 수 있습니다.

func GetUsersHandler(w http.ResponseWriter, r *http.Request) {
    gender := r.URL.Query().Get("gender")

    // 필터링 로직 구현
}

이렇게하면 gender 변수에는 female이 저장되어 필터링 로직에서 이를 활용할 수 있습니다.

데이터베이스 쿼리

데이터베이스를 사용하는 경우, 쿼리문을 작성하여 데이터를 필터링할 수도 있습니다. 다양한 데이터베이스 ORM 라이브러리와 함께 사용할 수 있으며, 라이브러리마다 조금씩 다를 수 있습니다. 아래는 Gorm ORM 라이브러리를 사용한 예입니다.

func GetUsersHandler(w http.ResponseWriter, r *http.Request) {
    gender := r.URL.Query().Get("gender")

    var users []User
    db.Where("gender = ?", gender).Find(&users)

    // 사용자 목록 반환
}

위 예제에서는 db.Where("gender = ?", gender)와 같이 Where 메서드를 사용하여 데이터베이스 필터링을 수행하고 있습니다.

정렬 처리

쿼리 파라미터 활용

마찬가지로, 쿼리 파라미터를 사용하여 데이터를 정렬할 수 있습니다. 클라이언트로부터 전달된 쿼리 파라미터의 값에 따라 정렬 방식을 다르게 설정할 수 있습니다. 예를 들어, /users?sort=name과 같은 요청을 받았을 때, 사용자들을 이름이 오름차순으로 정렬할 수 있습니다.

func GetUsersHandler(w http.ResponseWriter, r *http.Request) {
    sort := r.URL.Query().Get("sort")

    // 정렬 로직 구현
}

데이터베이스 쿼리

데이터베이스에서는 ORDER BY 절을 사용하여 데이터를 정렬할 수 있습니다. Gorm을 사용한 예를 들어보겠습니다.

func GetUsersHandler(w http.ResponseWriter, r *http.Request) {
    sort := r.URL.Query().Get("sort")

    var users []User
    db.Order(sort).Find(&users)

    // 사용자 목록 반환
}

위 예제에서는 db.Order(sort)와 같이 Order 메서드를 사용하여 데이터베이스 결과를 정렬하고 있습니다.

결론

Go 언어를 사용하여 RESTful API에서 데이터의 필터링 및 정렬 요청을 처리하는 방법을 알아보았습니다. 쿼리 파라미터를 사용하거나 데이터베이스 쿼리를 활용하여 필터링 및 정렬을 수행할 수 있습니다. 이를 통해 클라이언트에게 필요한 데이터를 적절하게 제공할 수 있습니다.