Константа http.StatusNotFound

Константа http.StatusNotFound представляет HTTP статус-код 404 Not Found. Она используется для указания, что запрошенный ресурс не существует на сервере. Это одна из наиболее часто используемых констант в пакете net/http при обработке HTTP запросов и формировании ответов.

Синтаксис

gohttp.StatusNotFound

Константа возвращает целочисленное значение типа int, равное 404.

Пример использования с http.Error

Давайте рассмотрим пример использования константы с функцией http.Error для отправки ответа 404 клиенту:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/" {
      http.Error(w, "Page not found", http.StatusNotFound)
      return
    }
    fmt.Fprintln(w, "Welcome to the main page")
  })

  http.ListenAndServe(":8080", nil)
}

В этом примере обработчик проверяет путь запроса. Если путь не равен корневому, функция http.Error отправляет статус 404 и сообщение "Page not found" с использованием константы http.StatusNotFound.

Пример с http.NotFound

Также константа используется внутри функции http.NotFound, которая является сокращенным способом отправки ответа 404:

gopackage main

import (
  "net/http"
)

func main() {
  http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) {
    if r.Method != http.MethodGet {
      http.NotFound(w, r)
      return
    }
  })

  http.ListenAndServe(":8080", nil)
}

В этом примере обработчик проверяет метод запроса. Если метод не GET, вызывается функция http.NotFound, которая внутри использует константу http.StatusNotFound для формирования ответа.

Пример проверки статуса в ответе

Константа может использоваться для проверки статуса ответа, полученного от сервера:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  res, err := http.Get("https://example.com/notfound")
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  if res.StatusCode == http.StatusNotFound {
    fmt.Println("Resource not found")
  } else {
    fmt.Printf("Status: %d\n", res.StatusCode)
  }
}

Результат выполнения кода:

go"Resource not found"

В этом примере мы выполняем GET запрос и проверяем статус ответа. Если код равен 404, выводим соответствующее сообщение.

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

  • константу http.StatusOK,
    которая представляет код 200 OK
  • константу http.StatusInternalServerError,
    которая представляет код 500 Internal Server Error
  • функцию http.NotFound,
    которая отправляет ответ с кодом 404
  • функцию http.Error,
    которая позволяет отправить произвольный код состояния