Проверяет понимание встроенной поддержки HTTP/2 в Go и её практического применения.
Go предоставляет нативную поддержку HTTP/2 в стандартной библиотеке net/http. Это означает, что разработчикам не нужно подключать сторонние библиотеки для базовой работы с HTTP/2. Сервер автоматически включает HTTP/2 при использовании TLS (HTTPS), а клиент автоматически выбирает HTTP/2 при соединении с сервером, поддерживающим этот протокол.
Для HTTPS-сервера достаточно использовать стандартный вызов ListenAndServeTLS, и Go автоматически настроит HTTP/2. Для HTTP-сервера без TLS (h2c) требуется явная настройка, так как большинство браузеров не поддерживают h2c, но это полезно для внутренних сервисов.
package main
import (
"net/http"
"golang.org/x/net/http2"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, HTTP/2!"))
})
// Для HTTPS (HTTP/2 включён автоматически)
http.ListenAndServeTLS(":443", "cert.pem", "key.pem", mux)
// Для HTTP без TLS (h2c) - требуется явная настройка
server := &http.Server{Addr: ":8080", Handler: mux}
http2.ConfigureServer(server, &http2.Server{})
server.ListenAndServe()
}Клиент net/http также автоматически использует HTTP/2 при HTTPS-соединениях. Это позволяет легко взаимодействовать с современными API, которые требуют HTTP/2 для мультиплексирования и сжатия заголовков.
Go делает работу с HTTP/2 простой и прозрачной. Для большинства случаев достаточно использовать стандартный net/http с TLS, и HTTP/2 будет работать автоматически. Для внутренних сервисов без TLS можно использовать h2c, но это требует дополнительной настройки. Эта встроенная поддержка делает Go отличным выбором для создания высокопроизводительных веб-сервисов.