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) EnableCompression()
- 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) 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 this option is set, the content of `AllowedOrigins`
// and `AllowOriginFunc` is ignored.
AllowOriginRequestFunc func(r *http.Request, origin string) bool
// 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 [] but "Origin" is always appended to the list.
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
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
}
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) EnableCompression ¶ added in v1.0.2
func (ctx *Context) EnableCompression()
EnableCompression enables the compression method based on the Accept-Encoding header
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.
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.