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

Функция http.HandleFunc

Функция http.HandleFunc регистрирует функцию-обработчик для обработки HTTP-запросов по заданному маршруту. В первый параметр мы передаем строку с URL-путем, во второй параметр мы передаем функцию, которая принимает http.ResponseWriter и указатель на http.Request и обрабатывает входящий запрос.

Синтаксис

http.HandleFunc(pattern, handler)

Пример

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

package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Welcome to the home page!") }) http.ListenAndServe(":8080", nil) }

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

"Welcome to the home page!"

Пример

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

package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", homeHandler) http.HandleFunc("/user/", userHandler) http.ListenAndServe(":8080", nil) } func homeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Home page") } func userHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "User profile page") }

Результат выполнения кода при переходе по адресу http://localhost:8080/user/123:

"User profile page"

Пример

Давайте создадим обработчик, который обрабатывает GET и POST запросы по-разному и возвращает ответ в формате JSON:

package main import ( "encoding/json" "fmt" "net/http" ) func main() { http.HandleFunc("/api/data", dataHandler) http.ListenAndServe(":8080", nil) } func dataHandler(w http.ResponseWriter, r *http.Request) { if r.Method == http.MethodGet { res := map[string]string{"message": "GET request received"} json.NewEncoder(w).Encode(res) } else if r.Method == http.MethodPost { res := map[string]string{"message": "POST request received"} json.NewEncoder(w).Encode(res) } else { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) } }

Результат выполнения GET-запроса к http://localhost:8080/api/data:

{"message":"GET request received"}

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

  • функцию http.Handle,
    которая регистрирует обработчик, реализующий интерфейс http.Handler
  • функцию http.ListenAndServe,
    которая запускает HTTP-сервер и прослушивает входящие запросы
  • функцию http.NotFound,
    которая возвращает клиенту ответ со статусом 404 Not Found
  • функцию http.Redirect,
    которая перенаправляет клиента на другой URL
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить