Функция http.NotFound

Функция http.NotFound отправляет клиенту HTTP-ответ с кодом состояния 404 Not Found и текстовым сообщением "404 page not found". Первым параметром функция принимает интерфейс http.ResponseWriter, через который отправляется ответ. Вторым параметром принимает указатель на структуру http.Request, представляющую входящий запрос от клиента.

Синтаксис

gohttp.NotFound(w http.ResponseWriter, r *http.Request)

Пример

Давайте создадим HTTP-сервер, который обрабатывает запросы к корневому пути и возвращает ошибку 404:

gopackage 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, результатом будет:

go"404 page not found"

Пример

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

gopackage 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)
  }
}

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

go"404 page not found"

Пример

Давайте используем функцию http.NotFound внутри условной логики для обработки различных типов запросов:

gopackage 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)
  }
}

Результат выполнения запроса с неподдерживаемым методом:

go"404 page not found"

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

  • функцию http.Error,
    которая отправляет произвольный код состояния с сообщением
  • функцию http.Redirect,
    которая выполняет перенаправление клиента на другой URL
  • функцию http.ServeFile,
    которая отдает содержимое файла в ответ на запрос
  • константу http.StatusNotFound,
    которая содержит числовой код состояния 404