코틀린에서 URL을 다루기 위한 유틸리티는 주로 java.net.URL 클래스와 Kotlin 표준 라이브러리의 일부 확장 함수를 활용합니다. 아래에서는 주요한 URL 관련 유틸리티와 예제를 소개하겠습니다.
1. URL 생성 및 파싱
java.net.URL 클래스는 URL을 파싱하고 생성하는 기능을 제공합니다.
import java.net.URL
fun main() {
// URL 생성
val url = URL("https://www.example.com/path?param=value")
// URL 파싱
println("Protocol: ${url.protocol}")
println("Host: ${url.host}")
println("Path: ${url.path}")
println("Query: ${url.query}")
}
2. URL 인코딩 및 디코딩
Kotlin 표준 라이브러리는 URL 인코딩 및 디코딩을 위한 URLEncoder 및 URLDecoder를 제공합니다.
import java.net.URLEncoder
import java.net.URLDecoder
fun main() {
// URL 인코딩
val encodedValue = URLEncoder.encode("value with spaces", "UTF-8")
println("Encoded Value: $encodedValue")
// URL 디코딩
val decodedValue = URLDecoder.decode("value%20with%20spaces", "UTF-8")
println("Decoded Value: $decodedValue")
}
3. 상대 경로 결합
java.net.URL 클래스를 사용하여 상대 경로를 기준 URL에 결합할 수 있습니다.
import java.net.URL
fun main() {
val baseUrl = URL("https://www.example.com/base")
val relativePath = "path/to/resource"
// 상대 경로 결합
val combinedUrl = URL(baseUrl, relativePath)
println("Combined URL: $combinedUrl")
}
4. 쿼리 매개변수 다루기
쿼리 매개변수를 다루기 위해 java.net.URL 클래스와 Kotlin의 문자열 및 컬렉션 확장 함수를 활용할 수 있습니다.
import java.net.URL
fun main() {
val urlString = "https://www.example.com/path?param1=value1¶m2=value2"
// URL 파싱
val url = URL(urlString)
// 쿼리 매개변수 읽기
val queryParams = url.query?.split('&')?.associate {
val (key, value) = it.split('=')
key to value
} ?: emptyMap()
println("Query Parameters: $queryParams")
}
5. Ktor의 URLBuilder 사용
Kotlin 기반의 웹 프레임워크인 Ktor는 io.ktor.http.URLBuilder 클래스를 사용하여 URL을 빌드하는 데 유용한 기능을 제공합니다.
import io.ktor.http.URLBuilder
fun main() {
val builtUrl = URLBuilder(
protocol = URLBuilder.Protocol.HTTPS,
host = "www.example.com",
encodedPath = "/path",
parameters = listOf("param1" to "value1", "param2" to "value2")
).buildString()
println("Built URL: $builtUrl")
}
위의 코드는 Ktor의 URLBuilder를 사용하여 URL을 빌드하는 간단한 예제입니다. Ktor는 HTTP 클라이언트 및 서버 개발을 위한 강력한 라이브러리이며, URL 관리에 있어서 편리한 도구를 제공합니다.
위의 예제 코드들은 주로 기본적인 URL 다루기에 대한 내용이며, 실제 프로젝트에서는 라이브러리나 프레임워크에 따라 다양한 도구 및 유틸리티를 활용할 수 있습니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 파일 시스템 유틸리티 (0) | 2024.01.02 |
---|---|
코틀린 파일 콘텐츠 접근 (0) | 2024.01.01 |
코틀린 스트림 생성 (0) | 2024.01.01 |
코틀린 스트림 유틸리티 (0) | 2024.01.01 |
코틀린 파일과 I/O 스트림 (0) | 2024.01.01 |