Как распарсить url строку в http запросе в golang?
Пытаюсь извлечь метод из url запроса, данные получаю, не могу получить метод.
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/api/", func(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("a")
age := r.URL.Query().Get("b")
met := r.URL.Query().Get("add")
fmt.Println("a = ", name, "b= ", age, "met = ", " ", met)
})
fmt.Println("Server is listening...")
http.ListenAndServe(":10443", nil)
}
Запрос:
http://localhost:10443/api/add?a=1&b=15
Хочу получить метод add (3 символа) , который идет после "/api/"
Ответы (1 шт):
Автор решения: Pak Uula
→ Ссылка
query - это та часть URL, которая идёт после знака вопроса ?
В вашем случае add не входит в query, а является частью path. Извлечь "имя файла" из URL можно методом path.Base. Пример разбора вашего URL:
package main
import (
"net/url"
"path"
)
func main() {
rawReq := "http://localhost:10443/api/add?a=1&b=15"
u,_ := url.Parse(rawReq);
println("Path: ", u.Path)
println("Method name: ", path.Base(u.Path))
}
Результат:
Path: /api/add
Method name: add