Documentation
¶
Index ¶
Constants ¶
const ( // InterfaceFieldName — имя поля для сетевого интерфейса. InterfaceFieldName = "server.http.interface" // PortFieldName — имя поля для порта. PortFieldName = "server.http.port" // ShutdownTimeoutFieldName — имя поля для таймаута завершения. ShutdownTimeoutFieldName = "server.http.timeout.shutdown" )
Variables ¶
var ( // InterfaceDefault — сетевой интерфейс по умолчанию (все интерфейсы). InterfaceDefault = "0.0.0.0" // PortDefault — порт по умолчанию. PortDefault = uint16(8080) // ShutdownTimeoutDefault — таймаут завершения по умолчанию (30 секунд). ShutdownTimeoutDefault = 30 * time.Second )
var Component = compogo.Component{ Name: "http.server", Dependencies: compogo.Components{ &runner.Component, }, Init: compogo.StepFunc(func(container compogo.Container) error { return container.Provides( NewConfig, NewServer, ) }), BindFlags: compogo.BindFlags(func(flagSet flag.FlagSet, container compogo.Container) error { return container.Invoke(func(config *Config) { flagSet.StringVar(&config.Interface, InterfaceFieldName, InterfaceDefault, "interface for listening to incoming requests") flagSet.Uint16Var(&config.Port, PortFieldName, PortDefault, "port for listening to incoming requests") flagSet.DurationVar( &config.ShutdownTimeout, ShutdownTimeoutFieldName, ShutdownTimeoutDefault, "timeout during which the HTTP server must be turned off after receiving a shutdown signal", ) }) }), Configuration: compogo.StepFunc(func(container compogo.Container) error { return container.Invoke(Configuration) }), PreWait: compogo.StepFunc(func(container compogo.Container) error { return container.Invoke(func(r runner.Runner, server Server) error { return r.RunProcess(server) }) }), }
Component — компонент HTTP-сервера для Compogo. Регистрирует сервер в DI-контейнере и запускает его через Runner.
Functions ¶
This section is empty.
Types ¶
type Config ¶
Config содержит конфигурацию HTTP-сервера.
func Configuration ¶
func Configuration(config *Config, configurator compogo.Configurator) *Config
Configuration загружает конфигурацию из Configurator. Если значения не заданы, устанавливаются значения по умолчанию.
type Middleware ¶
type Middleware interface {
// Middleware оборачивает http.Handler в цепочку обработки.
Middleware(next http.Handler) http.Handler
}
Middleware представляет функцию-обёртку для HTTP-обработчиков. Позволяет добавлять логирование, авторизацию, метрики и т.д.
type MiddlewareFunc ¶
MiddlewareFunc — функциональный адаптер для Middleware. Позволяет использовать функции как middleware.
Пример:
middleware := MiddlewareFunc(func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// before
next.ServeHTTP(w, r)
// after
})
})
func (MiddlewareFunc) Middleware ¶
func (m MiddlewareFunc) Middleware(next http.Handler) http.Handler
Middleware реализует интерфейс Middleware для MiddlewareFunc.
type Router ¶
type Router interface {
http.Handler
Use(middlewares ...Middleware)
Group(fn func(r Router))
Route(pattern string, fn func(r Router))
Mount(pattern string, h http.Handler)
Handle(pattern string, h http.Handler)
HandleFunc(pattern string, h http.HandlerFunc)
Method(method, pattern string, h http.Handler)
MethodFunc(method, pattern string, h http.HandlerFunc)
Connect(pattern string, h http.HandlerFunc)
Delete(pattern string, h http.HandlerFunc)
Get(pattern string, h http.HandlerFunc)
Head(pattern string, h http.HandlerFunc)
Options(pattern string, h http.HandlerFunc)
Patch(pattern string, h http.HandlerFunc)
Post(pattern string, h http.HandlerFunc)
Put(pattern string, h http.HandlerFunc)
Trace(pattern string, h http.HandlerFunc)
NotFound(h http.HandlerFunc)
MethodNotAllowed(h http.HandlerFunc)
}
Router определяет интерфейс HTTP-роутера с поддержкой:
- Группировки маршрутов
- Middleware
- Стандартных HTTP-методов (GET, POST, PUT, DELETE, и т.д.)
- Вложенных роутеров (Mount)
Интерфейс абстрагирует конкретную реализацию роутера (например, chi, gorilla/mux).