Go: минимальный HTTP-сервер с обработчиком

Категория: Nginx · Язык: Go · Обновлено:

Минимальный HTTP-сервер на Go создают через net/http: зарегистрируйте обработчик маршрута и запустите http.ListenAndServe. Для реального сервиса задайте ReadHeaderTimeout и обработайте ошибку запуска, чтобы сервер не оставался без защитных таймаутов.

Простой обработчик

Go
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 с контекстом в обработчике сигналов.

Поле/метод

Назначение

Addr

Адрес и порт listener

Handler

Маршрутизатор HTTP-запросов

ReadHeaderTimeout

Ограничение времени чтения заголовков

ListenAndServe()

Запустить сервер и ждать подключения

Как добавить POST-маршрут?

Зарегистрируйте отдельный handler, проверьте r.Method, ограничьте размер тела через http.MaxBytesReader и валидируйте декодированный JSON.