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

Константа http.MethodGet используется в пакете net/http для обозначения HTTP метода GET. Она определена как строковая константа со значением "GET". Использование этой константы вместо строкового литерала помогает избежать опечаток и делает код более поддерживаемым. Константу можно передавать в функции, которые ожидают название HTTP метода, например, при создании нового запроса с помощью http.NewRequest.

Синтаксис

goconst MethodGet = "GET"

Константа имеет тип string и может быть использована везде, где требуется указать метод HTTP запроса.

Пример

Давайте создадим HTTP запрос с методом GET, используя константу http.MethodGet:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  req, err := http.NewRequest(http.MethodGet, "https://example.com", nil)
  if err != nil {
    fmt.Println("Error creating request:", err)
    return
  }
  fmt.Println("Method:", req.Method)
}

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

go"Method: GET"

Как видно из примера, метод запроса был успешно установлен в "GET" благодаря использованию константы.

Пример

Сравним использование константы и строкового литерала при проверке метода входящего запроса:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  req, _ := http.NewRequest(http.MethodGet, "/test", nil)
  // Проверяем метод с использованием константы
  if req.Method == http.MethodGet {
    fmt.Println("Request method is GET")
  }
  // Проверяем метод с использованием литерала
  if req.Method == "GET" {
    fmt.Println("Request method is also GET")
  }
}

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

go"Request method is GET"
"Request method is also GET"

Оба способа работают одинаково, но использование константы предпочтительнее, так как она гарантирует корректное написание и упрощает рефакторинг.

Пример

Рассмотрим использование константы в обработчике HTTP запросов для проверки метода:

gopackage main

import (
  "fmt"
  "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
  if r.Method == http.MethodGet {
    fmt.Fprintln(w, "GET request received")
  } else {
    http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
  }
}

func main() {
  http.HandleFunc("/", handler)
  // Запуск сервера (закомментирован для примера)
  // http.ListenAndServe(":8080", nil)
  fmt.Println("Server would start on :8080")
}

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

go"Server would start on :8080"

В этом примере обработчик проверяет, является ли метод запроса GET, используя константу http.MethodGet. Это стандартная практика при написании HTTP серверов на Go.

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

  • константу http.MethodPost,
    которая обозначает метод HTTP POST
  • константу http.MethodPut,
    которая обозначает метод HTTP PUT
  • константу http.MethodDelete,
    которая обозначает метод HTTP DELETE
  • функцию http.NewRequest,
    которая создает новый HTTP запрос с указанным методом