Documentation ¶
Overview ¶
Package negroni is an idiomatic approach to web middleware in Go. It is tiny, non-intrusive, and encourages use of net/http Handlers.
If you like the idea of Martini, but you think it contains too much magic, then Negroni is a great fit.
For a full guide visit http://github.com/urfave/negroni
package main import ( "github.com/urfave/negroni" "net/http" "fmt" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { fmt.Fprintf(w, "Welcome to the home page!") }) n := negroni.Classic() n.UseHandler(mux) n.Run(":3000") }
Index ¶
- type Handler
- type HandlerFunc
- type Logger
- type Negroni
- func (n *Negroni) Handlers() []Handler
- func (n *Negroni) Run(addr string)
- func (n *Negroni) ServeHTTP(rw http.ResponseWriter, r *http.Request)
- func (n *Negroni) Use(handler Handler)
- func (n *Negroni) UseFunc(...)
- func (n *Negroni) UseHandler(handler http.Handler)
- func (n *Negroni) UseHandlerFunc(handlerFunc func(rw http.ResponseWriter, r *http.Request))
- type Recovery
- type ResponseWriter
- type Static
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Handler ¶
type Handler interface {
ServeHTTP(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)
}
Handler handler is an interface that objects can implement to be registered to serve as middleware in the Negroni middleware stack. ServeHTTP should yield to the next middleware in the chain by invoking the next http.HandlerFunc passed in.
If the Handler writes to the ResponseWriter, the next http.HandlerFunc should not be invoked.
type HandlerFunc ¶
type HandlerFunc func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)
HandlerFunc is an adapter to allow the use of ordinary functions as Negroni handlers. If f is a function with the appropriate signature, HandlerFunc(f) is a Handler object that calls f.
func (HandlerFunc) ServeHTTP ¶
func (h HandlerFunc) ServeHTTP(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)
type Logger ¶
type Logger struct { // Logger inherits from log.Logger used to log messages with the Logger middleware *log.Logger }
Logger is a middleware handler that logs the request as it goes in and the response as it goes out.
func (*Logger) ServeHTTP ¶
func (l *Logger) ServeHTTP(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)
type Negroni ¶
type Negroni struct {
// contains filtered or unexported fields
}
Negroni is a stack of Middleware Handlers that can be invoked as an http.Handler. Negroni middleware is evaluated in the order that they are added to the stack using the Use and UseHandler methods.
func Classic ¶
func Classic() *Negroni
Classic returns a new Negroni instance with the default middleware already in the stack.
Recovery - Panic Recovery Middleware Logger - Request/Response Logging Static - Static File Serving
func (*Negroni) Handlers ¶
Returns a list of all the handlers in the current Negroni middleware chain.
func (*Negroni) Run ¶
Run is a convenience function that runs the negroni stack as an HTTP server. The addr string takes the same format as http.ListenAndServe.
func (*Negroni) Use ¶
Use adds a Handler onto the middleware stack. Handlers are invoked in the order they are added to a Negroni.
func (*Negroni) UseFunc ¶
func (n *Negroni) UseFunc(handlerFunc func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc))
UseFunc adds a Negroni-style handler function onto the middleware stack.
func (*Negroni) UseHandler ¶
UseHandler adds a http.Handler onto the middleware stack. Handlers are invoked in the order they are added to a Negroni.
func (*Negroni) UseHandlerFunc ¶
func (n *Negroni) UseHandlerFunc(handlerFunc func(rw http.ResponseWriter, r *http.Request))
UseHandler adds a http.HandlerFunc-style handler function onto the middleware stack.
type Recovery ¶
type Recovery struct { Logger *log.Logger PrintStack bool ErrorHandlerFunc func(interface{}) StackAll bool StackSize int }
Recovery is a Negroni middleware that recovers from any panics and writes a 500 if there was one.
func (*Recovery) ServeHTTP ¶
func (rec *Recovery) ServeHTTP(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)
type ResponseWriter ¶
type ResponseWriter interface { http.ResponseWriter http.Flusher // Status returns the status code of the response or 200 if the response has // not been written (as this is the default response code in net/http) Status() int // Written returns whether or not the ResponseWriter has been written. Written() bool // Size returns the size of the response body. Size() int // Before allows for a function to be called before the ResponseWriter has been written to. This is // useful for setting headers or any other operations that must happen before a response has been written. Before(func(ResponseWriter)) }
ResponseWriter is a wrapper around http.ResponseWriter that provides extra information about the response. It is recommended that middleware handlers use this construct to wrap a responsewriter if the functionality calls for it.
func NewResponseWriter ¶
func NewResponseWriter(rw http.ResponseWriter) ResponseWriter
NewResponseWriter creates a ResponseWriter that wraps an http.ResponseWriter
type Static ¶
type Static struct { // Dir is the directory to serve static files from Dir http.FileSystem // Prefix is the optional prefix used to serve the static directory content Prefix string // IndexFile defines which file to serve as index if it exists. IndexFile string }
Static is a middleware handler that serves static files in the given directory/filesystem. If the file does not exist on the filesystem, it passes along to the next middleware in the chain. If you desire "fileserver" type behavior where it returns a 404 for unfound files, you should consider using http.FileServer from the Go stdlib.
func NewStatic ¶
func NewStatic(directory http.FileSystem) *Static
NewStatic returns a new instance of Static
func (*Static) ServeHTTP ¶
func (s *Static) ServeHTTP(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)