[kotlin] Ktor Locations 사용 시 주의할 점

Ktor는 Kotlin으로 작성된 비동기 웹 프레임워크로, 경로 및 쿼리 매개변수를 쉽게 처리하기 위한 Locations 모듈을 제공합니다. 하지만 Locations 모듈을 사용할 때 몇 가지 주의할 점이 있습니다.

1. Data 클래스에서 @Location 어노테이션 사용 시

Locations 모듈을 사용하는 경우, 데이터 클래스에 @Location 어노테이션을 사용하여 경로를 정의합니다. 이 때, 내부에 nullable하지 않은 변수를 정의할 때는 주의해야 합니다. nullable하지 않은 변수는 해당 매개변수가 존재하지 않을 때 예외가 발생할 수 있습니다.

예:

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

2. suspend 함수 사용 시 주의

Ktor에서 Locations 모듈을 사용할 때, 매개변수를 처리하거나 경로를 생성하기 위해서는 suspend 함수를 사용해야 합니다. 따라서 Locations 모듈을 사용하는 함수가 suspend 함수인지 확인해야 합니다.

예:

suspend fun ApplicationCall.getUserId(): Int {
    val id = call.parameters["id"]
    return id?.toInt() ?: 0
}

3. Routing 설정 시 경로 처리

Locations 모듈을 사용하기 위해서는 Routing 설정 시에 install(Locations)를 통해 Locations 모듈을 추가해야 합니다.

예:

install(Locations)

Locations 모듈을 사용할 때는 위와 같은 주의점에 유의하여 안정적으로 경로와 쿼리 매개변수를 처리할 수 있습니다.

참고: Ktor Locations 공식 문서