← Назад к вопросам

Где посмотреть документацию по методам HTTP?

1.0 Junior🔥 91 комментариев
#Сетевые протоколы и API

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Документация по методам HTTP для Go-разработчика

В Go работа с HTTP методами реализована через стандартную библиотеку net/http. Документацию можно изучать на нескольких уровнях — от официальных спецификаций до практических примеров в коде.

Основные источники документации

  1. Официальная спецификация HTTP (RFC):

    • RFC 7231 — семантика и содержание (определения методов GET, POST, PUT и др.)
    • RFC 5789 — метод PATCH
    • Эти документы — первоисточник, но на русском языке обычно используются переводы или адаптированные материалы.
  2. Документация Go net/http:

    • Встроенная документация: go doc net/http или pkg.go.dev/net/http
    • Разделы Request.Method, MethodGet, MethodPost и т.д.
    // Пример получения метода из запроса
    func handler(w http.ResponseWriter, r *http.Request) {
        method := r.Method // GET, POST и т.д.
    }
    
  3. MDN Web Docs (Mozilla Developer Network):

Ключевые HTTP методы в контексте Go

В net/http определены константы для основных методов:

const (
    MethodGet     = "GET"
    MethodPost    = "POST"
    MethodPut     = "PUT"
    MethodDelete  = "DELETE"
    MethodPatch   = "PATCH"
    MethodHead    = "HEAD"
    MethodOptions = "OPTIONS"
    MethodConnect = "CONNECT"
    MethodTrace   = "TRACE"
)

Как работать с методами в Go: практические примеры

Обработка разных методов в роутере:

func main() {
    http.HandleFunc("/item", func(w http.ResponseWriter, r *http.Request) {
        switch r.Method {
        case http.MethodGet:
            // Получить данные
        case http.MethodPost:
            // Создать новый ресурс
        case http.MethodPut:
            // Обновить ресурс полностью
        case http.MethodPatch:
            // Частичное обновление
        case http.MethodDelete:
            // Удалить ресурс
        default:
            http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
        }
    })
}

Создание запросов с разными методами:

func makeRequests() {
    // GET запрос
    resp, _ := http.Get("https://api.example.com")
    
    // POST с телом
    body := strings.NewReader(`{"title":"test"}`)
    resp, _ := http.Post("https://api.example.com", "application/json", body)
    
    // Кастомный метод с NewRequest
    req, _ := http.NewRequest(http.MethodPatch, "https://api.example.com", body)
    req.Header.Set("Content-Type", "application/json")
    client := &http.Client{}
    resp, _ = client.Do(req)
}

Рекомендации по изучению

  • Изучайте через тесты: В исходниках Go (src/net/http/) ищите тесты для методов
  • Читайте код популярных фреймворков: Gin, Echo, Chi — как они реализуют маршрутизацию по методам
  • Используйте Swagger/OpenAPI: Для REST API документация методов часто представлена в OpenAPI формате
  • Практикуйтесь: Создайте простой REST сервер с CRUD операциями, используя все основные методы

Частые ошибки при работе с методами

  1. Игнорирование MethodNotAllowed — всегда возвращайте корректный статус 405
  2. Путаница между PUT и PATCH — PUT заменяет ресурс полностью, PATCH — частично
  3. Небезопасные операции в GET — GET не должен изменять состояние сервера

Для глубокого понимания рекомендую сочетать изучение RFC, официальной документации Go и практическое применение в проектах. Именно так вы поймёте не только "как", но и "почему" методы HTTP работают именно так.

Где посмотреть документацию по методам HTTP? | PrepBro