Функция http.Handle
Функция http.Handle из пакета net/http позволяет зарегистрировать обработчик для конкретного маршрута. Она принимает два параметра: паттерн маршрута в виде строки и объект, реализующий интерфейс http.Handler. При поступлении HTTP-запроса на указанный маршрут будет вызван метод ServeHTTP переданного обработчика.
Синтаксис
http.Handle(pattern, handler)
Пример
Давайте зарегистрируем обработчик для корневого маршрута, который будет возвращать приветствие:
package main
import (
"fmt"
"net/http"
)
type GreetingHandler struct{}
func (h GreetingHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.Handle("/", GreetingHandler{})
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода при обращении к http://localhost:8080/:
"Hello, World!"
Пример
Зарегистрируем обработчик для маршрута с подстановочным знаком:
package main
import (
"fmt"
"net/http"
)
type UserHandler struct{}
func (h UserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "User profile page")
}
func main() {
http.Handle("/user/", UserHandler{})
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода при обращении к http://localhost:8080/user/123:
"User profile page"
Пример
Используем встроенный обработчик для отдачи статических файлов:
package main
import "net/http"
func main() {
fileServer := http.FileServer(http.Dir("./static"))
http.Handle("/static/", http.StripPrefix("/static/", fileServer))
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода при обращении к http://localhost:8080/static/style.css:
"(содержимое файла style.css)"
Смотрите также
-
функцию
http.HandleFunc,
которая позволяет регистрировать функцию-обработчик напрямую -
функцию
http.ListenAndServe,
которая запускает HTTP-сервер и начинает прослушивание порта -
тип
http.ServeMux,
который представляет мультиплексор HTTP-запросов -
функцию
http.ServeMux.Handle,
которая регистрирует обработчик в мультиплексоре