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

Интерфейс http.Handler

Интерфейс http.Handler является центральным механизмом обработки HTTP-запросов в пакете net/http. Он определяет единственный метод ServeHTTP, который принимает два параметра: запись ответа http.ResponseWriter и указатель на запрос *http.Request. Любая структура, реализующая этот метод, может выступать в роли обработчика HTTP-запросов.

Синтаксис

type Handler interface { ServeHTTP(ResponseWriter, *Request) }

Пример

Давайте создадим простую структуру myHandler, которая реализует интерфейс http.Handler и обрабатывает запросы:

package main import ( "fmt" "net/http" ) type myHandler struct{} func (h myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") } func main() { handler := myHandler{} http.ListenAndServe(":8080", handler) }

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

"Hello, World!"

Пример

В этом примере обработчик анализирует путь запроса и возвращает разный ответ в зависимости от URL:

package main import ( "fmt" "net/http" ) type routeHandler struct{} func (h routeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case "/": fmt.Fprintf(w, "Home page") case "/about": fmt.Fprintf(w, "About page") default: http.NotFound(w, r) } } func main() { handler := routeHandler{} http.ListenAndServe(":8080", handler) }

Результат выполнения кода при обращении к разным путям:

"Home page" // при запросе / "About page" // при запросе /about

Пример

Интерфейс http.Handler также может быть реализован с помощью функции-обработчика через тип http.HandlerFunc. Это удобный способ превратить обычную функцию в обработчик:

package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello from HandlerFunc") } func main() { handler := http.HandlerFunc(helloHandler) http.ListenAndServe(":8080", handler) }

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

"Hello from HandlerFunc"

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

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