Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
 - Variables
 - func AddressPort(address string) int
 - func Bytes2str(b []byte) string
 - func Get(name string) func(*Config) Engine
 - func NewListener(address string, reuse bool) (net.Listener, error)
 - func Register(name string, newEngine func(*Config) Engine)
 - func Str2bytes(s string) []byte
 - type Config
 - func (c *Config) AddTLSCert(certFile, keyFile string) *Config
 - func (c *Config) InitListener(before ...func() error) error
 - func (c *Config) InitTLSConfig(certAndKey ...string) *Config
 - func (c *Config) InitTLSListener(before ...func() error) error
 - func (c *Config) NewAutoTLSManager(hosts ...string) *autocert.Manager
 - func (c *Config) Print(engine string)
 - func (c *Config) SetListener(ln net.Listener) *Config
 - func (c *Config) SupportAutoTLS(autoTLSManager *autocert.Manager, hosts ...string) *Config
 
- type ConfigSetter
 - func Address(v string) ConfigSetter
 - func DisableHTTP2(v bool) ConfigSetter
 - func Listener(v net.Listener) ConfigSetter
 - func MaxConnsPerIP(v int) ConfigSetter
 - func MaxRequestBodySize(v int) ConfigSetter
 - func MaxRequestsPerConn(v int) ConfigSetter
 - func ReadTimeout(v time.Duration) ConfigSetter
 - func ReusePort(v bool) ConfigSetter
 - func TLSAuto(v bool) ConfigSetter
 - func TLSCacheDir(v string) ConfigSetter
 - func TLSCertFile(v string) ConfigSetter
 - func TLSConfig(v *tls.Config) ConfigSetter
 - func TLSEmail(v string) ConfigSetter
 - func TLSHosts(v []string) ConfigSetter
 - func TLSKeyFile(v string) ConfigSetter
 - func WriteTimeout(v time.Duration) ConfigSetter
 
- type Engine
 - type Handler
 - type HandlerFunc
 - type Header
 - type Request
 - type Response
 - type URL
 - type URLValuer
 
Constants ¶
const DefaultMaxRequestBodySize = 32 << 20 // 32 MB
    Variables ¶
var (
	ErrUnsupported = errors.New(`Unsupported`)
)
    var (
	HeaderSetCookie = `Set-Cookie`
)
    Functions ¶
func AddressPort ¶ added in v1.3.9
func NewListener ¶ added in v1.3.0
Types ¶
type Config ¶
type Config struct {
	Address            string       // TCP address to listen on.
	Listener           net.Listener // Custom `net.Listener`. If set, server accepts connections on it.
	ReusePort          bool
	TLSAuto            bool
	TLSHosts           []string
	TLSEmail           string
	TLSCacheDir        string
	TLSConfig          *tls.Config
	TLSCertFile        string        // TLS certificate file path.
	TLSKeyFile         string        // TLS key file path.
	DisableHTTP2       bool          // Disables HTTP/2.
	ReadTimeout        time.Duration // Maximum duration before timing out read of the request.
	WriteTimeout       time.Duration // Maximum duration before timing out write of the response.
	MaxConnsPerIP      int
	MaxRequestsPerConn int
	MaxRequestBodySize int
}
    Config defines engine configuration.
func (*Config) AddTLSCert ¶ added in v1.3.0
func (*Config) InitListener ¶ added in v1.3.0
func (*Config) InitTLSConfig ¶ added in v1.3.0
func (*Config) InitTLSListener ¶ added in v1.3.0
func (*Config) NewAutoTLSManager ¶ added in v1.4.3
type ConfigSetter ¶ added in v1.6.0
type ConfigSetter func(*Config)
func Address ¶ added in v1.6.0
func Address(v string) ConfigSetter
Address TCP address to listen on.
func DisableHTTP2 ¶ added in v1.6.0
func DisableHTTP2(v bool) ConfigSetter
DisableHTTP2 Disables HTTP/2.
func Listener ¶ added in v1.6.0
func Listener(v net.Listener) ConfigSetter
Listener Custom `net.Listener`. If set, server accepts connections on it.
func MaxConnsPerIP ¶ added in v1.6.0
func MaxConnsPerIP(v int) ConfigSetter
func MaxRequestBodySize ¶ added in v1.6.0
func MaxRequestBodySize(v int) ConfigSetter
func MaxRequestsPerConn ¶ added in v1.6.0
func MaxRequestsPerConn(v int) ConfigSetter
func ReadTimeout ¶ added in v1.6.0
func ReadTimeout(v time.Duration) ConfigSetter
ReadTimeout Maximum duration before timing out read of the request.
func ReusePort ¶ added in v1.6.0
func ReusePort(v bool) ConfigSetter
func TLSAuto ¶ added in v1.6.0
func TLSAuto(v bool) ConfigSetter
func TLSCacheDir ¶ added in v1.6.0
func TLSCacheDir(v string) ConfigSetter
func TLSCertFile ¶ added in v1.6.0
func TLSCertFile(v string) ConfigSetter
TLSCertFile TLS certificate file path.
func TLSConfig ¶ added in v1.6.0
func TLSConfig(v *tls.Config) ConfigSetter
func TLSEmail ¶ added in v1.6.0
func TLSEmail(v string) ConfigSetter
func TLSHosts ¶ added in v1.6.0
func TLSHosts(v []string) ConfigSetter
func TLSKeyFile ¶ added in v1.6.0
func TLSKeyFile(v string) ConfigSetter
TLSKeyFile TLS key file path.
func WriteTimeout ¶ added in v1.6.0
func WriteTimeout(v time.Duration) ConfigSetter
WriteTimeout Maximum duration before timing out write of the response.
type Engine ¶
type Engine interface {
	SetHandler(Handler)
	SetLogger(logger.Logger)
	Start() error
	Stop() error
	Shutdown(ctx context.Context) error
	Config() *Config
}
    Engine defines an interface for HTTP server.
type Handler ¶
Handler defines an interface to server HTTP requests via `ServeHTTP(Request, Response)` function.
type HandlerFunc ¶
HandlerFunc is an adapter to allow the use of `func(Request, Response)` as HTTP handlers.
func (HandlerFunc) ServeHTTP ¶
func (h HandlerFunc) ServeHTTP(req Request, res Response)
ServeHTTP serves HTTP request.
type Header ¶
type Header interface {
	// Add adds the key, value pair to the header. It appends to any existing values
	// associated with key.
	Add(string, string)
	// Del deletes the values associated with key.
	Del(string)
	// Get gets the first value associated with the given key. If there are
	// no values associated with the key, Get returns "".
	Get(string) string
	Values(string) []string
	// Set sets the header entries associated with key to the single element value.
	// It replaces any existing values associated with key.
	Set(string, string)
	Object() interface{}
	Std() http.Header
}
    Header defines an interface for HTTP header.
type Request ¶
type Request interface {
	Context() context.Context
	WithContext(ctx context.Context) *http.Request
	SetValue(key string, value interface{})
	SetMaxSize(maxSize int)
	MaxSize() int
	// Scheme returns the HTTP protocol scheme, `http` or `https`.
	Scheme() string
	// Host returns HTTP request host. Per RFC 2616, this is either the value of
	// the `Host` header or the host name given in the URL itself.
	Host() string
	// SetHost sets the host of the request.
	SetHost(string)
	// URI returns the unmodified `Request-URI` sent by the client.
	URI() string
	// SetURI sets the URI of the request.
	SetURI(string)
	// URL returns `engine.URL`.
	URL() URL
	// Header returns `engine.Header`.
	Header() Header
	// Proto returns the HTTP proto. (HTTP/1.1 etc.)
	Proto() string
	// RemoteAddress returns the client's network address.
	RemoteAddress() string
	// Method returns the request's HTTP function.
	Method() string
	// SetMethod sets the HTTP method of the request.
	SetMethod(string)
	// Body returns request's body.
	Body() io.ReadCloser
	SetBody(io.Reader)
	// FormValue returns the form field value for the provided name.
	FormValue(string) string
	Object() interface{}
	Form() URLValuer
	PostForm() URLValuer
	// MultipartForm returns the multipart form.
	MultipartForm() (*multipart.Form, error)
	// IsTLS returns true if HTTP connection is TLS otherwise false.
	IsTLS() bool
	Cookie(string) string
	Referer() string
	// UserAgent returns the client's `User-Agent`.
	UserAgent() string
	// FormFile returns the multipart form file for the provided name.
	FormFile(string) (multipart.File, *multipart.FileHeader, error)
	// Size returns the size of request's body.
	Size() int64
	BasicAuth() (string, string, bool)
	StdRequest() *http.Request
}
    Request defines an interface for HTTP request.
type Response ¶
type Response interface {
	// Header returns `engine.Header`
	Header() Header
	// WriteHeader sends an HTTP response header with status code.
	WriteHeader(int)
	KeepBody(bool)
	// Write writes the data to the connection as part of an HTTP reply.
	Write([]byte) (int, error)
	// Status returns the HTTP response status.
	Status() int
	// Size returns the number of bytes written to HTTP response.
	Size() int64
	// Committed returns true if HTTP response header is written, otherwise false.
	Committed() bool
	// SetWriter sets the HTTP response writer.
	SetWriter(io.Writer)
	// Write returns the HTTP response writer.
	Writer() io.Writer
	Object() interface{}
	Hijacker(func(net.Conn)) error
	Body() []byte
	Redirect(string, int)
	NotFound()
	SetCookie(*http.Cookie)
	ServeFile(string)
	ServeContent(content io.ReadSeeker, name string, modtime time.Time)
	Stream(func(io.Writer) bool) error
	Error(string, ...int)
	StdResponseWriter() http.ResponseWriter
}
    Response defines an interface for HTTP response.