Функция http.Handle

Функция http.Handle из пакета net/http позволяет зарегистрировать обработчик для конкретного маршрута. Она принимает два параметра: паттерн маршрута в виде строки и объект, реализующий интерфейс http.Handler. При поступлении HTTP-запроса на указанный маршрут будет вызван метод ServeHTTP переданного обработчика.

Синтаксис

gohttp.Handle(pattern, handler)

Пример

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

gopackage 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/:

go"Hello, World!"

Пример

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

gopackage 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:

go"User profile page"

Пример

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

gopackage 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:

go"(содержимое файла style.css)"

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

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