Функция http.NewServeMux
Функция http.NewServeMux создает новый экземпляр мультиплексора HTTP-запросов, который реализует интерфейс http.Handler. Мультиплексор позволяет регистрировать обработчики для различных путей URL и направляет входящие HTTP-запросы к соответствующему обработчику на основе пути запроса. Функция не принимает никаких параметров и возвращает указатель на структуру http.ServeMux.
Синтаксис
func NewServeMux() *ServeMux
Пример
Давайте создадим новый мультиплексор и зарегистрируем обработчик для корневого пути:
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)
}
Пример
Давайте создадим мультиплексор с несколькими обработчиками для разных путей:
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.Handler:
package main
import (
"fmt"
"net/http"
)
type helloHandler struct{}
func (h helloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello from custom handler")
}
func main() {
mux := http.NewServeMux()
mux.Handle("/hello", helloHandler{})
http.ListenAndServe(":8080", mux)
}
Смотрите также
-
структуру
http.ServeMux,
которая представляет мультиплексор HTTP-запросов -
метод
ServeMux.Handle,
который регистрирует обработчик для указанного пути -
метод
ServeMux.HandleFunc,
который регистрирует функцию-обработчик для указанного пути -
функцию
http.ListenAndServe,
которая запускает HTTP-сервер с указанным обработчиком