Метод http.ServeMux.Handle
Метод ServeMux.Handle регистрирует обработчик для заданного маршрута в мультиплексоре HTTP-запросов.
В первый параметр метод принимает строку с шаблоном пути (pattern), во второй — обработчик, реализующий интерфейс http.Handler.
Обработчик будет вызываться для всех входящих запросов, чей URL соответствует зарегистрированному шаблону.
Синтаксис
func (mux *ServeMux) Handle(pattern string, handler http.Handler)
Пример
Давайте зарегистрируем простой обработчик для маршрута "/hello":
package main
import (
"fmt"
"net/http"
)
type HelloHandler struct{}
func (h HelloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
mux := http.NewServeMux()
mux.Handle("/hello", HelloHandler{})
http.ListenAndServe(":8080", mux)
}
Пример
Давайте зарегистрируем обработчик для маршрута "/user" с использованием замыкания:
package main
import (
"fmt"
"net/http"
)
func main() {
mux := http.NewServeMux()
mux.Handle("/user", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "User page")
}))
http.ListenAndServe(":8080", mux)
}
Пример
Давайте зарегистрируем обработчик для корневого маршрута "/", который будет перехватывать все запросы:
package main
import (
"fmt"
"net/http"
)
type RootHandler struct{}
func (h RootHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Root path: %s", r.URL.Path)
}
func main() {
mux := http.NewServeMux()
mux.Handle("/", RootHandler{})
http.ListenAndServe(":8080", mux)
}
Смотрите также
-
метод
ServeMux.HandleFunc,
который позволяет зарегистрировать функцию как обработчик -
интерфейс
http.Handler,
который должен реализовывать любой объект-обработчик -
функцию
http.ListenAndServe,
которая запускает HTTP-сервер с указанным мультиплексором -
функцию
http.NewServeMux,
которая создает новый экземпляр мультиплексора