서론
Go 언어에서는 net/url 패키지를 사용하여 URL을 간단하게 파싱하고 필요에 따라 URL을 수정할 수 있다. 이 패키지는 URL의 각 구성 요소를 쉽게 추출할 수 있게 해주며 URL을 생성하거나 수정할 때도 사용할 수 있다. URL을 파싱한 후에는 쿼리 파라미터를 동적으로 추가하거나 수정할 수 있으며, URL을 새롭게 생성하는 것도 가능하다.
URL 파싱하기
package main
import (
"fmt"
"net/url"
)
func main() {
rawURL := "https://blog.jae-sung.com/archive/20241115?name=jaeusng&status=sleeply#home"
parsedURL, err := url.Parse(rawURL)
if err == nil {
fmt.Println("Scheme:", parsedURL.Scheme)
fmt.Println("Host:", parsedURL.Host)
fmt.Println("Path:", parsedURL.Path)
fmt.Println("Fragment:", parsedURL.Fragment)
fmt.Println()
fmt.Println("[Query Params]")
queryParams := parsedURL.Query()
for k, v := range queryParams {
fmt.Printf("%s: %s\n", k, v)
}
}
}
출력 결과
Scheme: https
Host: blog.jae-sung.com
Path: /archive/20241115
Fragment: home
[Query Params]
name: [jaeusng]
status: [sleeply]
이 예제에서는 url.Parse로 URL을 파싱한 후 각 구성 요소와 쿼리 파라미터를 출력한다.
URL 수정하기
package main
import (
"fmt"
"net/url"
)
func main() {
rawURL := "https://blog.jae-sung.com/archive/20241115?name=jaeusng&status=sleeply#home"
parsedURL, err := url.Parse(rawURL)
if err == nil {
//parsedURL = &url.URL{}
parsedURL.Scheme = "rtsp"
parsedURL.User = url.UserPassword("jaesung", "pass")
parsedURL.Host = "jae-sung.com:5544"
parsedURL.Path = "live"
parsedURL.Fragment = "ch1"
queryParams := parsedURL.Query()
queryParams.Add("status", "tipsy")
queryParams.Set("room", "335")
queryParams.Del("name")
parsedURL.RawQuery = queryParams.Encode()
fmt.Println(parsedURL.String())
}
}
출력 결과
rtsp://jaesung:pass@jae-sung.com:5544/live?room=335&status=sleeply&status=tipsy#ch1
이 예제에서는 파싱된 URL을 수정하여 새로운 URL을 생성하고 출력한다. 코드에서 주석을 제거하면 URL을 새롭게 구성하는 예제로 사용할 수 있다. net/url 패키지를 활용하면 URL을 효과적으로 파싱하고 수정할 수 있어 다양한 웹 애플리케이션에서 활용될 수 있다.
'Language > Go' 카테고리의 다른 글
[golang] runtime 패키지로 메모리 사용 추적 (0) | 2024.11.17 |
---|---|
[golang] 메모리 지역성을 고려한 2차원 슬라이스 순회 (0) | 2024.11.16 |
[golang] 텍스트 이미지 생성 및 JPEG 인코딩 (0) | 2024.11.14 |
[golang] GOMAXPROCS로 최대 CPU 코어 수 제한하기 (0) | 2024.11.13 |
[golang] 파일 잠금으로 프로그램 중복 실행 방지하기 (0) | 2024.11.12 |