[Go] ลบบาง query param ออกจาก URL ด้วย package net/url
วันนี้มีโจทย์ให้ต้องลบบาง query param ออกจาก URL ที่ได้รับมา ซึ่งจะใช้ package net/url
ช่วยในการ parse แล้วลบบางค่าออกได้
เช่นเรามี URL แบบนี้
https://www.example.com?foo=hello&bar=world
แล้วเราอยากจะเปลี่ยนให้เหลือแค่
https://www.example.com?bar=world
เราจะใช้ package net/url
เขามาช่วย เริ่มแรกให้เรา parse URL string ให้เป็น value ของ URL ก่อนแบบนี้
urlStr := "https://www.example.com?foo=hello&bar=world"
u, err := url.Parse(urlStr)
if err != nil {
log.Fatal(err)
}
จากจากนั้นก็เรียก method Query()
เพื่อให้ได้ query params ในรูปแบบของ url.Values
type จากนั้นก็เรียก method Del
ลบ query param ตามชื่อที่ต้องการลบออก
qParams := u.Query()
qParams.Del("foo")
สุดท้ายก็เรียก method Encode()
เพื่อเซตค่ากลับไปที่ field RawQuery
ของ type URL
u.RawQuery = qParams.Encode()
ตัวอย่างโค้ดสุดท้ายหน้าตาแบบนี้
package main
import (
"fmt"
"log"
"net/url"
)
func main() {
urlStr := "https://www.example.com?foo=hello&bar=world"
u, err := url.Parse(urlStr)
if err != nil {
log.Fatal(err)
}
qParams := u.Query()
qParams.Del("foo")
u.RawQuery = qParams.Encode()
fmt.Println(u)
// output:
// https://www.example.com?bar=world
}