Тип http.HandlerFunc
Тип http.HandlerFunc из пакета net/http
представляет собой функциональный тип, который реализует
интерфейс http.Handler. Он позволяет использовать
обычные функции с сигнатурой
func(ResponseWriter, *Request)
в качестве обработчиков HTTP-запросов. В первый параметр
функция принимает интерфейс http.ResponseWriter
для формирования ответа, во второй параметр -
указатель на структуру http.Request, содержащую
информацию о входящем запросе.
Синтаксис
http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// обработка запроса
})
Пример
Давайте создадим простой обработчик, который возвращает приветственное сообщение:
package main
import (
"fmt"
"net/http"
)
func main() {
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello, World!")
})
http.ListenAndServe(":8080", handler)
}
Пример
Давайте создадим обработчик, который анализирует путь запроса и возвращает соответствующий ответ:
package main
import (
"fmt"
"net/http"
)
func main() {
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case "/":
fmt.Fprintln(w, "Home page")
case "/about":
fmt.Fprintln(w, "About page")
default:
w.WriteHeader(http.StatusNotFound)
fmt.Fprintln(w, "Page not found")
}
})
http.ListenAndServe(":8080", handler)
}
Пример
Давайте используем http.HandlerFunc для обработки
различных HTTP-методов:
package main
import (
"fmt"
"net/http"
)
func main() {
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodGet:
fmt.Fprintln(w, "GET request handled")
case http.MethodPost:
fmt.Fprintln(w, "POST request handled")
default:
w.WriteHeader(http.StatusMethodNotAllowed)
fmt.Fprintln(w, "Method not allowed")
}
})
http.ListenAndServe(":8080", handler)
}
Смотрите также
-
функцию
http.HandleFunc,
которая регистрирует функцию-обработчик для указанного паттерна -
интерфейс
http.Handler,
который определяет метод ServeHTTP для обработки запросов -
тип
http.ServeMux,
который реализует маршрутизатор для распределения запросов -
интерфейс
http.ResponseWriter,
который используется для формирования HTTP-ответа