Функция 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