Go: минимальный HTTP-сервер с обработчиком
Минимальный HTTP-сервер на Go создают через net/http: зарегистрируйте обработчик маршрута и запустите http.ListenAndServe. Для реального сервиса задайте ReadHeaderTimeout и обработайте ошибку запуска, чтобы сервер не оставался без защитных таймаутов.
Простой обработчик
package main
import (
"fmt"
"log"
"net/http"
"time"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
fmt.Fprintln(w, "ok")
})
server := &http.Server{
Addr: ":8080",
Handler: mux,
ReadHeaderTimeout: 5 * time.Second,
}
log.Fatal(server.ListenAndServe())
}Запустите файл и проверьте маршрут запросом curl http://localhost:8080/health. Для остановки используйте http.Server.Shutdown с контекстом в обработчике сигналов.
Поле/метод | Назначение |
|---|---|
| Адрес и порт listener |
| Маршрутизатор HTTP-запросов |
| Ограничение времени чтения заголовков |
| Запустить сервер и ждать подключения |
Как добавить POST-маршрут?
Зарегистрируйте отдельный handler, проверьте r.Method, ограничьте размер тела через http.MaxBytesReader и валидируйте декодированный JSON.