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

Переменная http.DefaultServeMux

Переменная http.DefaultServeMux является экземпляром http.ServeMux, который создается автоматически при импорте пакета net/http. Она используется как маршрутизатор по умолчанию для функций http.ListenAndServe и http.ListenAndServeTLS, когда им не передан собственный маршрутизатор. Через эту переменную можно регистрировать обработчики для различных HTTP-путей.

Синтаксис

http.DefaultServeMux

Пример

Давайте зарегистрируем обработчик для пути "/hello" с помощью метода HandleFunc:

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

В этом примере мы регистрируем функцию-обработчик для пути "/hello" через глобальную функцию http.HandleFunc, которая работает с http.DefaultServeMux. При запуске сервера с параметром nil используется стандартный маршрутизатор. После запуска сервера при обращении к http://localhost:8080/hello будет выведено сообщение "Hello, World!".

Пример

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

package main import ( "fmt" "net/http" ) func main() { mux := http.DefaultServeMux mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Main page") }) mux.HandleFunc("/about", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "About page") }) server := &http.Server{ Addr: ":8080", Handler: mux, } server.ListenAndServe() }

В этом примере мы явно получаем ссылку на http.DefaultServeMux и регистрируем на нем обработчики для двух путей. Затем создаем собственный экземпляр http.Server и передаем ему стандартный маршрутизатор в качестве обработчика. Этот подход полезен, когда требуется более тонкая настройка сервера.

Пример

Давайте создадим обработчик, который будет возвращать информацию о запросе, используя http.DefaultServeMux:

package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/info", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Method: %s\n", r.Method) fmt.Fprintf(w, "URL: %s\n", r.URL.Path) fmt.Fprintf(w, "User-Agent: %s\n", r.UserAgent()) }) http.ListenAndServe(":8080", nil) }

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

"Method: GET" "URL: /info" "User-Agent: curl/7.68.0"

В этом примере обработчик возвращает информацию о методе запроса, пути и заголовке User-Agent. При обращении к серверу с помощью curl будет выведена подобная информация.

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

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