Documentation ¶
Overview ¶
Package rex provides a simple & light-weight REST server in golang
Index ¶
- func AddRoute(method string, pattern string, handle Handle)
- func DELETE(pattern string, handles ...Handle)
- func GET(pattern string, handles ...Handle)
- func HEAD(pattern string, handles ...Handle)
- func PATCH(pattern string, handles ...Handle)
- func POST(pattern string, handles ...Handle)
- func PUT(pattern string, handles ...Handle)
- func Serve(config ServerConfig) chan error
- func Start(port uint16) chan error
- func StartWithAutoTLS(port uint16, hosts ...string) chan error
- func StartWithTLS(port uint16, certFile string, keyFile string) chan error
- func Use(middlewares ...Handle)
- type ACLUser
- type AutoTLSConfig
- type CORS
- type Context
- func (ctx *Context) ACLUser() ACLUser
- func (ctx *Context) BasicAuthUser() string
- func (ctx *Context) Cookie(name string) (cookie *http.Cookie)
- func (ctx *Context) RemoteIP() string
- func (ctx *Context) RemoveCookie(cookie http.Cookie)
- func (ctx *Context) RemoveCookieByName(name string)
- func (ctx *Context) Session() *SessionStub
- func (ctx *Context) SetCompressionWriter()
- func (ctx *Context) SetCookie(cookie http.Cookie)
- type Error
- type Form
- func (form *Form) File(key string) (multipart.File, *multipart.FileHeader, error)
- func (form *Form) Float(key string) (float64, error)
- func (form *Form) Has(key string) bool
- func (form *Form) Int(key string) (int64, error)
- func (form *Form) Require(key string) string
- func (form *Form) RequireFloat(key string) float64
- func (form *Form) RequireInt(key string) int64
- func (form *Form) Value(key string) string
- type Handle
- func ACL(permission string) Handle
- func ACLAuth(auth func(ctx *Context) ACLUser) Handle
- func AccessLogger(logger Logger) Handle
- func BasicAuth(auth func(name string, secret string) (ok bool, err error)) Handle
- func BasicAuthWithRealm(realm string, auth func(name string, secret string) (ok bool, err error)) Handle
- func Chain(handles ...Handle) Handle
- func Compression() Handle
- func Cors(c CORS) Handle
- func ErrorLogger(logger Logger) Handle
- func Header(key string, value string) Handle
- func Session(opts SessionOptions) Handle
- func Static(root, fallback string) Handle
- type Logger
- type Param
- type Params
- type Path
- type Response
- func Content(name string, mtime time.Time, r io.ReadSeeker) Response
- func Err(status int, v ...string) Response
- func FS(root string, fallback string) Response
- func File(name string) Response
- func HTML(html string) Response
- func Redirect(url string, status int) Response
- func Render(t Template, data interface{}) Response
- func Status(status int, payload interface{}) Response
- type Router
- type ServerConfig
- type SessionOptions
- type SessionStub
- type Store
- type TLSConfig
- type Template
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func StartWithAutoTLS ¶ added in v1.9.1
StartWithAutoTLS starts a REX server with autocert powered by Let's Encrypto SSL
func StartWithTLS ¶ added in v1.9.1
StartWithTLS starts a REX server with TLS.
Types ¶
type ACLUser ¶ added in v0.8.1
type ACLUser interface {
Permissions() []string
}
A ACLUser interface contains the Permissions method that returns the permission IDs
type AutoTLSConfig ¶ added in v0.4.0
type AutoTLSConfig struct { AcceptTOS bool `json:"acceptTOS"` Hosts []string `json:"hosts"` CacheDir string `json:"cacheDir"` Cache autocert.Cache `json:"-"` }
AutoTLSConfig contains options to support autocert by Let's Encrypto SSL.
type CORS ¶
type CORS struct { // AllowedOrigins is a list of origins a cross-domain request can be executed from. // If the special "*" value is present in the list, all origins will be allowed. // An origin may contain a wildcard (*) to replace 0 or more characters // (i.e.: http://*.domain.com). Usage of wildcards implies a small performance penalty. // Only one wildcard can be used per origin. // Default value is ["*"] AllowedOrigins []string // AllowOriginFunc is a custom function to validate the origin. It take the // origin as argument and returns true if allowed or false otherwise. If // this option is set, the content of `AllowedOrigins` is ignored. AllowOriginFunc func(origin string) bool // AllowOriginRequestFunc is a custom function to validate the origin. It // takes the HTTP Request object and the origin as argument and returns true // if allowed or false otherwise. If headers are used take the decision, // consider using AllowOriginVaryRequestFunc instead. If this option is set, // the content of `AllowedOrigins`, `AllowOriginFunc` are ignored. AllowOriginRequestFunc func(r *http.Request, origin string) bool // AllowOriginVaryRequestFunc is a custom function to validate the origin. // It takes the HTTP Request object and the origin as argument and returns // true if allowed or false otherwise with a list of headers used to take // that decision if any so they can be added to the Vary header. If this // option is set, the content of `AllowedOrigins`, `AllowOriginFunc` and // `AllowOriginRequestFunc` are ignored. AllowOriginVaryRequestFunc func(r *http.Request, origin string) (bool, []string) // AllowedMethods is a list of methods the client is allowed to use with // cross-domain requests. Default value is simple methods (HEAD, GET and POST). AllowedMethods []string // AllowedHeaders is list of non simple headers the client is allowed to use with // cross-domain requests. // If the special "*" value is present in the list, all headers will be allowed. // Default value is []. AllowedHeaders []string // ExposedHeaders indicates which headers are safe to expose to the API of a CORS // API specification ExposedHeaders []string // MaxAge indicates how long (in seconds) the results of a preflight request // can be cached. Default value is 0, which stands for no // Access-Control-Max-Age header to be sent back, resulting in browsers // using their default value (5s by spec). If you need to force a 0 max-age, // set `MaxAge` to a negative value (ie: -1). MaxAge int // AllowCredentials indicates whether the request can include user credentials like // cookies, HTTP authentication or client side SSL certificates. AllowCredentials bool // AllowPrivateNetwork indicates whether to accept cross-origin requests over a // private network. AllowPrivateNetwork bool // OptionsPassthrough instructs preflight to let other potential next handlers to // process the OPTIONS method. Turn this on if your application handles OPTIONS. OptionsPassthrough bool // Provides a status code to use for successful OPTIONS requests. // Default value is http.StatusNoContent (204). OptionsSuccessStatus int // Debugging flag adds additional output to debug server side CORS issues Debug bool // Adds a custom logger, implies Debug is true Logger Logger }
CORS is a configuration container to setup the CORS middleware.
func CorsAllowAll ¶ added in v1.8.1
func CorsAllowAll() CORS
CorsAllowAll create a new Cors handler with permissive configuration allowing all origins with all standard methods with any header and credentials.
type Context ¶
type Context struct { W http.ResponseWriter R *http.Request Path *Path Form *Form Store *Store // contains filtered or unexported fields }
A Context to handle http requests.
func (*Context) BasicAuthUser ¶ added in v0.5.0
BasicAuthUser returns the BasicAuth username
func (*Context) RemoveCookie ¶
RemoveCookie removes the cookie.
func (*Context) RemoveCookieByName ¶ added in v0.8.0
RemoveCookieByName removes the cookie by name.
func (*Context) Session ¶
func (ctx *Context) Session() *SessionStub
Session returns the session if it is undefined then create a new one.
func (*Context) SetCompressionWriter ¶ added in v1.10.10
func (ctx *Context) SetCompressionWriter()
SetCompressionWriter set the compression writer based on the Accept-Encoding header
type Form ¶ added in v0.11.0
A Form to handle request form data.
func (*Form) RequireFloat ¶ added in v0.11.0
RequireFloat requires a value as float
func (*Form) RequireInt ¶ added in v0.11.0
RequireInt requires a value as int
type Handle ¶ added in v0.8.0
type Handle func(ctx *Context) interface{}
Handle defines the API handle
func AccessLogger ¶ added in v0.13.2
AccessLogger returns a AccessLogger middleware to sets the access logger.
func BasicAuthWithRealm ¶ added in v0.8.0
func BasicAuthWithRealm(realm string, auth func(name string, secret string) (ok bool, err error)) Handle
BasicAuthWithRealm returns a Basic HTTP Authorization middleware with realm.
func Compression ¶ added in v1.8.0
func Compression() Handle
Compression is REX middleware to enable compress by content type and client `Accept-Encoding`
func ErrorLogger ¶ added in v0.13.2
ErrorLogger returns a ErrorLogger middleware to sets the error logger.
func Session ¶ added in v0.5.1
func Session(opts SessionOptions) Handle
type Logger ¶ added in v0.5.0
type Logger interface {
Printf(format string, v ...interface{})
}
A Logger interface contains the Printf method.
type Params ¶ added in v1.10.0
type Params []Param
Params is a Param-slice, as returned by the router. The slice is ordered, the first URL parameter is also the first slice value. It is therefore safe to read values by the index.
type Path ¶ added in v1.2.0
type Path struct { Params Params // contains filtered or unexported fields }
A Form to handle request path.
type Response ¶ added in v1.10.3
type Response interface{}
Response defines the response interface.
func Content ¶ added in v1.0.0
Content replies to the request using the content in the provided ReadSeeker.
func FS ¶ added in v1.0.1
FS replies to the request with the contents of the file system rooted at root.
func Redirect ¶ added in v1.0.0
Redirect replies to the request with a redirect to url, which may be a path relative to the request path.
type Router ¶ added in v1.10.1
type Router struct {
// contains filtered or unexported fields
}
Router is a http.Handler with middlewares and routes.
type ServerConfig ¶ added in v0.12.5
type ServerConfig struct { Host string `json:"host"` Port uint16 `json:"port"` TLS TLSConfig `json:"tls"` ReadTimeout uint32 `json:"readTimeout"` WriteTimeout uint32 `json:"writeTimeout"` MaxHeaderBytes uint32 `json:"maxHeaderBytes"` }
ServerConfig contains options to run the REX server.
type SessionOptions ¶ added in v1.9.2
type SessionStub ¶ added in v1.9.2
SessionStub is a stub for session
func (*SessionStub) Delete ¶ added in v1.9.2
func (s *SessionStub) Delete(key string)
Delete removes a session value
func (*SessionStub) Flush ¶ added in v1.9.2
func (s *SessionStub) Flush()
Flush flushes all session values
func (*SessionStub) Get ¶ added in v1.9.2
func (s *SessionStub) Get(key string) []byte
Get returns a session value
func (*SessionStub) Has ¶ added in v1.9.2
func (s *SessionStub) Has(key string) bool
Has checks a value exists
func (*SessionStub) Set ¶ added in v1.9.2
func (s *SessionStub) Set(key string, value []byte)
Set sets a session value
type Store ¶ added in v1.1.0
type Store struct {
// contains filtered or unexported fields
}
A Store to store values.