← Назад к вопросам
Где посмотреть документацию по методам HTTP?
1.0 Junior🔥 91 комментариев
#Сетевые протоколы и API
Комментарии (1)
🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Документация по методам HTTP для Go-разработчика
В Go работа с HTTP методами реализована через стандартную библиотеку net/http. Документацию можно изучать на нескольких уровнях — от официальных спецификаций до практических примеров в коде.
Основные источники документации
-
Официальная спецификация HTTP (RFC):
- RFC 7231 — семантика и содержание (определения методов GET, POST, PUT и др.)
- RFC 5789 — метод PATCH
- Эти документы — первоисточник, но на русском языке обычно используются переводы или адаптированные материалы.
-
Документация 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 и т.д. } - Встроенная документация:
-
MDN Web Docs (Mozilla Developer Network):
- developer.mozilla.org/ru/docs/Web/HTTP/Methods
- Подробное описание на русском с примерами использования.
Ключевые 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 операциями, используя все основные методы
Частые ошибки при работе с методами
- Игнорирование
MethodNotAllowed— всегда возвращайте корректный статус 405 - Путаница между PUT и PATCH — PUT заменяет ресурс полностью, PATCH — частично
- Небезопасные операции в GET — GET не должен изменять состояние сервера
Для глубокого понимания рекомендую сочетать изучение RFC, официальной документации Go и практическое применение в проектах. Именно так вы поймёте не только "как", но и "почему" методы HTTP работают именно так.