Функция http.NotFound
Функция http.NotFound отправляет клиенту HTTP-ответ
с кодом состояния 404 Not Found и текстовым сообщением
"404 page not found". Первым параметром функция принимает
интерфейс http.ResponseWriter, через который
отправляется ответ. Вторым параметром принимает указатель
на структуру http.Request, представляющую
входящий запрос от клиента.
Синтаксис
http.NotFound(w http.ResponseWriter, r *http.Request)
Пример
Давайте создадим HTTP-сервер, который обрабатывает запросы к корневому пути и возвращает ошибку 404:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
http.NotFound(w, r)
})
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("Server error:", err)
}
}
Если выполнить запрос к серверу через браузер или curl, результатом будет:
"404 page not found"
Пример
Давайте создадим обработчик с несколькими маршрутами, где для несуществующих путей будет возвращаться ошибка 404:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
fmt.Fprintf(w, "Welcome to home page")
} else {
http.NotFound(w, r)
}
})
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("Server error:", err)
}
}
Результат выполнения запроса к несуществующему пути:
"404 page not found"
Пример
Давайте используем функцию http.NotFound
внутри условной логики для обработки различных
типов запросов:
package main
import (
"fmt"
"net/http"
)
func handleRequest(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET":
fmt.Fprintf(w, "GET request received")
case "POST":
fmt.Fprintf(w, "POST request received")
default:
http.NotFound(w, r)
}
}
func main() {
http.HandleFunc("/", handleRequest)
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("Server error:", err)
}
}
Результат выполнения запроса с неподдерживаемым методом:
"404 page not found"
Смотрите также
-
функцию
http.Error,
которая отправляет произвольный код состояния с сообщением -
функцию
http.Redirect,
которая выполняет перенаправление клиента на другой URL -
функцию
http.ServeFile,
которая отдает содержимое файла в ответ на запрос -
константу
http.StatusNotFound,
которая содержит числовой код состояния 404