server

package
v1.9.18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 18, 2024 License: MIT Imports: 13 Imported by: 0

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,
		router.Component,
		runner.Component,
	},
	Constructor: app.Constructor(func(container container.Container) error {
		return container.Provides(
			NewConfig,
			NewReConfigurationWithConfigurator,
		)
	}),
	BindFlags: app.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",
			)
		})
	}),
	Run: app.Run(func(container container.Container) error {
		return container.Invoke(func(
			server *ReConfiguration,
			reConfiguration re_configuration.ReConfiguration,
			informer logger.Informer,
			config *Config,
			runner runner.Runner,
		) error {
			reConfiguration.Registration(server)
			informer.Info("http.server: registration in the reConfigurator")

			return runner.AddProcesses(server)
		})
	}),
}

Functions

This section is empty.

Types

type Config

type Config struct {
	Interface       string
	Port            uint16
	ShutdownTimeout time.Duration
}

func Configuration

func Configuration(config *Config, configurator configurator.Configurator) *Config

func NewConfig

func NewConfig() *Config

type HTTPServer

type HTTPServer struct {
	// contains filtered or unexported fields
}

func NewHTTPServer

func NewHTTPServer(logger logger.Logger, router router.Router, config *Config) *HTTPServer

func NewWithConfigurator

func NewWithConfigurator(configurator configurator.Configurator, config *Config, router router.Router, logger logger.Logger) *HTTPServer

func (*HTTPServer) Name

func (server *HTTPServer) Name() string

func (*HTTPServer) Process

func (server *HTTPServer) Process(ctx context.Context) error

type ReConfiguration

type ReConfiguration struct {
	// contains filtered or unexported fields
}

func NewReConfiguration

func NewReConfiguration(logger logger.Logger, router router.Router, config *Config) *ReConfiguration

func NewReConfigurationWithConfigurator

func NewReConfigurationWithConfigurator(logger logger.Logger, router router.Router, config *Config, configurator configurator.Configurator) *ReConfiguration

func (*ReConfiguration) Name

func (reConfiguration *ReConfiguration) Name() string

func (*ReConfiguration) Process

func (reConfiguration *ReConfiguration) Process(ctx context.Context) error

func (*ReConfiguration) ReConfiguration

func (reConfiguration *ReConfiguration) ReConfiguration(configurator configurator.Configurator) error

func (*ReConfiguration) Server

func (reConfiguration *ReConfiguration) Server() Server

func (*ReConfiguration) SetServer

func (reConfiguration *ReConfiguration) SetServer(server Server)

func (*ReConfiguration) Start

func (reConfiguration *ReConfiguration) Start(ctx context.Context)

func (*ReConfiguration) Stop

func (reConfiguration *ReConfiguration) Stop()

type Server

type Server interface {
	runner.Process
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL