РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1059 of 1593 menu

Метод http.ServeMux.HandleFunc

Метод http.ServeMux.HandleFunc регистрирует функцию-обработчик для конкретного HTTP маршрута в мультиплексоре. Первым параметром метод принимает строку с шаблоном маршрута, вторым - функцию-обработчик с сигнатурой func(http.ResponseWriter, *http.Request). Этот метод является альтернативой глобальной функции http.HandleFunc и позволяет более гибко управлять маршрутизацией.

Синтаксис

serveMux.HandleFunc(pattern string, handler func(ResponseWriter, *Request))

Пример

Давайте зарегистрируем обработчик для корневого маршрута:

package main import ( "fmt" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") }) http.ListenAndServe(":8080", mux) }

Результат выполнения кода при запросе к http://localhost:8080/:

"Hello, World!"

Пример

Давайте зарегистрируем несколько обработчиков для разных маршрутов:

package main import ( "fmt" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Home Page") }) mux.HandleFunc("/about", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "About Page") }) mux.HandleFunc("/contact", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Contact Page") }) http.ListenAndServe(":8080", mux) }

Результат выполнения кода при запросе к http://localhost:8080/about:

"About Page"

Пример

Давайте используем именованную функцию вместо анонимной:

package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello from named handler") } func main() { mux := http.NewServeMux() mux.HandleFunc("/hello", helloHandler) http.ListenAndServe(":8080", mux) }

Результат выполнения кода при запросе к http://localhost:8080/hello:

"Hello from named handler"

Пример

Давайте зарегистрируем обработчик, который обрабатывает параметры запроса:

package main import ( "fmt" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/greet", func(w http.ResponseWriter, r *http.Request) { name := r.URL.Query().Get("name") if name == "" { name = "Guest" } fmt.Fprintf(w, "Hello, %s!", name) }) http.ListenAndServe(":8080", mux) }

Результат выполнения кода при запросе к http://localhost:8080/greet?name=John:

"Hello, John!"

Смотрите также

  • метод http.ServeMux.Handle,
    который регистрирует обработчик, реализующий интерфейс http.Handler
  • функцию http.HandleFunc,
    которая регистрирует обработчик в глобальном мультиплексоре
  • функцию http.NewServeMux,
    которая создает новый экземпляр мультиплексора
  • функцию http.ListenAndServe,
    которая запускает HTTP сервер на указанном порту
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить