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

Константа http.MethodPatch представляет метод HTTP PATCH. Она содержит строковое значение "PATCH" и используется для частичного обновления ресурса на сервере. В отличие от PUT, который заменяет весь ресурс, PATCH применяется только к указанным полям.

Константа определена в пакете net/http и имеет тип string. Ее можно использовать при создании запросов через http.NewRequest или при настройке сервера для обработки PATCH-запросов.

Синтаксис

gohttp.MethodPatch

Константа возвращает строку "PATCH", которую можно передавать в функции, ожидающие метод HTTP.

Пример отправки PATCH-запроса

Создадим PATCH-запрос с использованием константы:

gopackage main

import (
  "bytes"
  "fmt"
  "net/http"
)

func main() {
  url := "https://api.example.com/users/1"
  jsonData := []byte(`{"name":"John"}`)

  req, err := http.NewRequest(http.MethodPatch, url, bytes.NewBuffer(jsonData))
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  req.Header.Set("Content-Type", "application/json")

  fmt.Println("Method:", req.Method)
  fmt.Println("URL:", req.URL)
  fmt.Println("Headers:", req.Header)
}

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

go"Method: PATCH"
"URL: https://api.example.com/users/1"
"Headers: map[Content-Type:[application/json]]"

Пример обработки PATCH-запроса на сервере

Настроим обработчик для PATCH-запросов:

gopackage main

import (
  "fmt"
  "net/http"
)

func patchHandler(w http.ResponseWriter, r *http.Request) {
  if r.Method == http.MethodPatch {
    fmt.Fprintln(w, "PATCH request received")
    return
  }
  http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
}

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

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

go"Server started at :8080"

Пример сравнения с другими методами

Используем константу для проверки метода запроса:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  methods := []string{
    http.MethodGet,
    http.MethodPost,
    http.MethodPut,
    http.MethodDelete,
    http.MethodPatch,
  }

  for _, method := range methods {
    if method == http.MethodPatch {
      fmt.Println("Found PATCH method:", method)
      break
    }
  }
}

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

go"Found PATCH method: PATCH"

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

  • константу http.MethodGet,
    которая представляет метод HTTP GET
  • константу http.MethodPost,
    которая представляет метод HTTP POST
  • константу http.MethodPut,
    которая представляет метод HTTP PUT
  • константу http.MethodDelete,
    которая представляет метод HTTP DELETE