[kotlin] Ktor Locations 활용 예시

Kotlin의 Ktor는 경로 및 쿼리 매개변수를 쉽게 처리할 수 있는 Ktor Locations 라이브러리를 제공합니다. 이 라이브러리를 활용하여 경로 및 쿼리 매개변수를 안전하게 파싱하고, 유효성을 검사할 수 있습니다. 이번에는 Ktor Locations를 사용하여 간단한 경로 매개변수를 처리하는 예시를 살펴보겠습니다.

의존성 추가

먼저, build.gradle 또는 build.gradle.kts 파일에 다음 의존성을 추가합니다.

dependencies {
    implementation "io.ktor:ktor-locations:$ktor_version"
}

Location 클래스 정의

다음으로, 경로를 나타내는 Location 클래스를 정의합니다. 예를 들어, “/user/{userId}” 경로에 대한 Location 클래스를 정의하려면 다음과 같이 작성할 수 있습니다.

import io.ktor.locations.Location

@Location("/user/{userId}")
data class UserLocation(val userId: Int)

위 코드에서 @Location 어노테이션을 사용하여 경로를 정의하고, data class를 이용하여 매개변수를 정의합니다.

라우팅

이제 Ktor 애플리케이션에서 이 Location 클래스를 사용하여 라우팅을 설정할 수 있습니다. 아래의 예시는 UserLocation을 통해 경로 매개변수를 읽어와 처리하는 방법을 보여줍니다.

install(Locations) {
    location<UserLocation> { userLocation ->
        val userId = userLocation.userId
        call.respond("User ID: $userId")
    }
}

위 코드에서 install(Locations)을 통해 Location 기능을 활성화하고, location<UserLocation>으로 UserLocation 클래스를 등록합니다. 그리고 해당 위치로 요청이 오면 userId를 읽어와 응답을 반환합니다.

요청

마지막으로, /user/123 경로로 GET 요청을 보내면 Ktor는 UserLocation 클래스를 사용하여 userId를 추출하고 응답을 반환할 것입니다.

이렇게 Ktor Locations를 활용하면 간단하게 경로 매개변수를 처리할 수 있으며, 더 복잡한 상황에서도 유용하게 사용할 수 있습니다.

더 많은 기능과 활용 방법에 대해서는 Ktor 공식 문서와 예시를 참고하시기 바랍니다.

참고 자료

이상으로 Ktor Locations를 사용하여 간단한 경로 매개변수를 처리하는 예시에 대해 살펴보았습니다.