Я создаю очень простой веб-сервер с помощью golang, чтобы понять пакет http, но я обнаружил, что функция HandleFunc выполняется два раза для одного запроса, и есть favicon.ico, которого я не ожидал.
Вот код веб-сервера:
package main
import (
"fmt"
"log"
"net/http"
"strings"
)
// sayHelloName a basic web function
func sayHelloName(w http.ResponseWriter, r *http.Request) {
r.ParseForm() // Parse parameters
fmt.Println(r.Form)
fmt.Println("path", r.URL.Path)
fmt.Println("scheme", r.URL.Scheme)
fmt.Println(r.Form["url_long"])
for k, v := range r.Form {
fmt.Println("key", k)
fmt.Println("val", strings.Join(v, ""))
}
fmt.Fprintf(w, "hello Go-web")
}
func main() {
http.HandleFunc("/", sayHelloName)
// log.Println("Serve listen at http://localhost:8900/")
err := http.ListenAndServe(":8900", nil)
if err != nil {
log.Fatal("Listen & Serve Error", err)
}
}
посетите http://localhost:9090/?url_long=111&url_long=222
Реальный вывод
map[url_long:[111 222]]
путь /
схема
[111 222]
ключ url_long
val 111222
map[]
путь /favicon.ico
схема
[]
Я не понимаю, зачем здесь favicon.ico.
Будем признательны за любую помощь.