README ¶
HTTP сервер.
Компонент предоставляет готовый и настроенный http сервер, с готовым роутингом. Так же, компонент сам следит за закрытием контекста из компонента Отслеживание сигнала на закрытие приложения и останавливает сервер при закрытии контекста.
Объект конфигурации.
type Config struct {
Interface string
Port uint16
ShutdownTimeout time.Duration
}
Описание полей:
Поле | Описание | Значение по умолчанию |
---|---|---|
Interface | Интерфейс прослушивания запросов, этот параметр может быть передан одним из 3-х методов: - флаг командной строки --server.http.interface - переменная окружения SERVER_HTTP_INTERFACE - значение в конфиг файле server.http.interface |
0.0.0.0 |
Port | Порт прослушивания запросов, этот параметр может быть передан одним из 3-х методов: - флаг командной строки --server.http.port - переменная окружения SERVER_HTTP_PORT - значение в конфиг файле server.http.port |
8080 |
ShutdownTimeout | Таймаут в течении которого, сервер должен быть закрыт, после закрытия контекста, этот параметр может быть передан одним из 3-х методов: - флаг командной строки --server.http.timeout.shutdown - переменная окружения SERVER_HTTP_TIMEOUT_SHUTDOWN - значение в конфиг файле server.http.timeout.shutdown |
30s |
Пакет с компонентом предоставляет хелперы, которые находятся в подпакете helper
:
- JSONError - отправляет ошибки в json формате;
- WriteError - сканирует заголовки запроса
Accept
иContent-Type
, если хотя бы один имеет значениеapplication/json
отправляет ошибку в json формате, иначе отправляет ошибку обычным текстом.
Documentation ¶
Index ¶
Constants ¶
View Source
const ( InterfaceFieldName = "server.http.interface" PortFieldName = "server.http.port" ShutdownTimeoutFieldName = "server.http.timeout.shutdown" InterfaceDefault = "0.0.0.0" PortDefault = uint16(8080) ShutdownTimeoutDefault = 30 * time.Second )
Variables ¶
View Source
var Component = &app.Component{ Dependencies: app.Components{ logger.Component, configurator.Component, closer.OsSignalComponent, router.Component, info.Component, }, Constructor: func(container container.Container) error { return container.Provides( NewConfig, NewReConfigurationWithConfigurator, ) }, BindFlags: func(flagSet *pflag.FlagSet, container container.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", ) }) }, Serve: func(c container.Container) error { server, err := container.Get[*ReConfiguration](c) if err != nil { return err } closer, err := container.Get[closer.Closer](c) if err != nil { return err } reConfiguration, err := container.Get[configurator.ReConfiguration](c) if err != nil { return err } informer, err := container.Get[logger.Informer](c) if err != nil { return err } reConfiguration.Registration(server) informer.Info("http.server: registration in the reConfigurator") info, err := container.Get[info.Info](c) if err != nil { return err } config, err := container.Get[*Config](c) if err != nil { return err } info.Registration("http.server", config) return server.Serve(closer.GetContext()) }, }
Functions ¶
This section is empty.
Types ¶
type Config ¶
func Configuration ¶
func Configuration(config *Config, configurator configurator.Configurator) *Config
type HTTPServer ¶
type HTTPServer struct {
// contains filtered or unexported fields
}
func NewHTTPServer ¶
func NewWithConfigurator ¶
func NewWithConfigurator(configurator configurator.Configurator, config *Config, router router.Router, logger logger.Logger) *HTTPServer
type ReConfiguration ¶
type ReConfiguration struct {
// contains filtered or unexported fields
}
func NewReConfiguration ¶
func NewReConfigurationWithConfigurator ¶
func NewReConfigurationWithConfigurator(logger logger.Logger, router router.Router, config *Config, configurator configurator.Configurator) *ReConfiguration
func (*ReConfiguration) ReConfiguration ¶
func (reConfiguration *ReConfiguration) ReConfiguration(configurator configurator.Configurator) error
func (*ReConfiguration) Serve ¶
func (reConfiguration *ReConfiguration) Serve(ctx context.Context) error
func (*ReConfiguration) Server ¶
func (reConfiguration *ReConfiguration) Server() Server
Click to show internal directories.
Click to hide internal directories.