Как распарсить 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
→ Ссылка