Documentation ¶
Overview ¶
Package buffalo is a Go web development eco-system, designed to make your life easier.
Buffalo helps you to generate a web project that already has everything from front-end (JavaScript, SCSS, etc.) to back-end (database, routing, etc.) already hooked up and ready to run. From there it provides easy APIs to build your web application quickly in Go.
Buffalo **isn't just a framework**, it's a holistic web development environment and project structure that **lets developers get straight to the business** of, well, building their business.
Index ¶
- Constants
- Variables
- func Grifts(app *App)
- func LoadPlugins() error
- func MethodOverride(res http.ResponseWriter, req *http.Request)
- func WrapBuffaloHandler(h Handler) http.Handler
- func WrapBuffaloHandlerFunc(h Handler) http.HandlerFunc
- type App
- func (a *App) ANY(p string, h Handler)
- func (a *App) DELETE(p string, h Handler) *RouteInfo
- func (a *App) GET(p string, h Handler) *RouteInfo
- func (a *App) Group(groupPath string) *App
- func (a *App) HEAD(p string, h Handler) *RouteInfo
- func (a *App) Mount(p string, h http.Handler)
- func (a *App) Muxer() *mux.Router
- func (a *App) OPTIONS(p string, h Handler) *RouteInfo
- func (a *App) PATCH(p string, h Handler) *RouteInfo
- func (a *App) POST(p string, h Handler) *RouteInfo
- func (a *App) PUT(p string, h Handler) *RouteInfo
- func (a *App) PanicHandler(next Handler) Handler
- func (a *App) Redirect(status int, from, to string) *RouteInfo
- func (a *App) Resource(p string, r Resource) *App
- func (a *App) RouteHelpers() map[string]RouteHelperFunc
- func (a *App) Routes() RouteList
- func (a *App) Serve(srvs ...servers.Server) error
- func (a *App) ServeFiles(p string, root http.FileSystem)
- func (a *App) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (a *App) Stop(err error) error
- func (a *App) Use(mw ...MiddlewareFunc)
- func (a *App) VirtualHost(h string) *App
- type BaseResource
- type Context
- type Cookies
- type DefaultContext
- func (d *DefaultContext) Bind(value interface{}) error
- func (d *DefaultContext) Cookies() *Cookies
- func (d *DefaultContext) Data() map[string]interface{}
- func (d *DefaultContext) Error(status int, err error) error
- func (d *DefaultContext) File(name string) (binding.File, error)
- func (d *DefaultContext) Flash() *Flash
- func (d *DefaultContext) LogField(key string, value interface{})
- func (d *DefaultContext) LogFields(values map[string]interface{})
- func (d *DefaultContext) Logger() Logger
- func (d *DefaultContext) MarshalJSON() ([]byte, error)
- func (d *DefaultContext) Param(key string) string
- func (d *DefaultContext) Params() ParamValues
- func (d *DefaultContext) Redirect(status int, url string, args ...interface{}) error
- func (d *DefaultContext) Render(status int, rr render.Renderer) error
- func (d *DefaultContext) Request() *http.Request
- func (d *DefaultContext) Response() http.ResponseWriter
- func (d *DefaultContext) Session() *Session
- func (d *DefaultContext) Set(key string, value interface{})
- func (d *DefaultContext) String() string
- func (d *DefaultContext) Value(key interface{}) interface{}
- type ErrorHandler
- type ErrorHandlers
- type ErrorResponse
- type FS
- type Flash
- type HTTPError
- type Handler
- type Home
- type Logger
- type Middler
- type MiddlewareFunc
- type MiddlewareStack
- func (ms *MiddlewareStack) Clear()
- func (ms *MiddlewareStack) Remove(mws ...MiddlewareFunc)
- func (ms *MiddlewareStack) Replace(mw1 MiddlewareFunc, mw2 MiddlewareFunc)
- func (ms *MiddlewareStack) Skip(mw MiddlewareFunc, handlers ...Handler)
- func (ms MiddlewareStack) String() string
- func (ms *MiddlewareStack) Use(mw ...MiddlewareFunc)
- type Options
- type ParamValues
- type PreWare
- type Resource
- type Response
- type RouteHelperFunc
- type RouteInfo
- type RouteList
- type RouteNamer
- type Session
Constants ¶
const ( // EvtAppStart is emitted when buffalo.App#Serve is called EvtAppStart = "buffalo:app:start" // EvtAppStartErr is emitted when an error occurs calling buffalo.App#Serve EvtAppStartErr = "buffalo:app:start:err" // EvtAppStop is emitted when buffalo.App#Stop is called EvtAppStop = "buffalo:app:stop" // EvtAppStopErr is emitted when an error occurs calling buffalo.App#Stop EvtAppStopErr = "buffalo:app:stop:err" // EvtRouteStarted is emitted when a requested route is being processed EvtRouteStarted = "buffalo:route:started" // EvtRouteFinished is emitted when a requested route is completed EvtRouteFinished = "buffalo:route:finished" // EvtRouteErr is emitted when there is a problem handling processing a route EvtRouteErr = "buffalo:route:err" // EvtServerStart is emitted when buffalo is about to start servers EvtServerStart = "buffalo:server:start" // EvtServerStartErr is emitted when an error occurs when starting servers EvtServerStartErr = "buffalo:server:start:err" // EvtServerStop is emitted when buffalo is about to stop servers EvtServerStop = "buffalo:server:stop" // EvtServerStopErr is emitted when an error occurs when stopping servers EvtServerStopErr = "buffalo:server:stop:err" // EvtWorkerStart is emitted when buffalo is about to start workers EvtWorkerStart = "buffalo:worker:start" // EvtWorkerStartErr is emitted when an error occurs when starting workers EvtWorkerStartErr = "buffalo:worker:start:err" // EvtWorkerStop is emitted when buffalo is about to stop workers EvtWorkerStop = "buffalo:worker:stop" // EvtWorkerStopErr is emitted when an error occurs when stopping workers EvtWorkerStopErr = "buffalo:worker:stop:err" // EvtFailureErr is emitted when something can't be processed at all. it is a bad thing EvtFailureErr = "buffalo:failure:err" )
TODO: TODO-v1 check if they are really need to be exported.
The event id should be unique across packages as the format of "<package-name>:<additional-names>:<optional-error>" as documented. They should not be used by another packages to keep it informational. To make it sure, they need to be internal. Especially for plugable conponents like servers or workers, they can have their own event definition if they need but the buffalo runtime can emit generalize events when e.g. the runtime calls configured worker.
const (
// AssetsAgeVarName is the ENV variable used to specify max age when ServeFiles is used.
AssetsAgeVarName = "ASSETS_MAX_AGE"
)
Variables ¶
var RequestLogger = RequestLoggerFunc
RequestLogger can be be overridden to a user specified function that can be used to log the request.
Functions ¶
func LoadPlugins ¶ added in v0.13.14
func LoadPlugins() error
LoadPlugins will add listeners for any plugins that support "events"
func MethodOverride ¶
func MethodOverride(res http.ResponseWriter, req *http.Request)
MethodOverride is the default implementation for the Options#MethodOverride. By default it will look for a form value name `_method` and change the request method if that is present and the original request is of type "POST". This is added automatically when using `New` Buffalo, unless an alternative is defined in the Options.
func WrapBuffaloHandler ¶ added in v0.13.0
WrapBuffaloHandler wraps a buffalo.Handler to a standard http.Handler
NOTE: A buffalo Handler expects a buffalo Context. WrapBuffaloHandler uses the same logic as DefaultContext where possible, but some functionality (e.g. sessions and logging) WILL NOT work with this unwrap function. If those features are needed a custom UnwrapHandlerFunc needs to be implemented that provides a Context implementing those features.
func WrapBuffaloHandlerFunc ¶ added in v0.13.0
func WrapBuffaloHandlerFunc(h Handler) http.HandlerFunc
WrapBuffaloHandlerFunc wraps a buffalo.Handler to a standard http.HandlerFunc
NOTE: A buffalo Handler expects a buffalo Context. WrapBuffaloHandlerFunc uses the same logic as DefaultContext where possible, but some functionality (e.g. sessions and logging) WILL NOT work with this unwrap function. If those features are needed a custom WrapBuffaloHandlerFunc needs to be implemented that provides a Context implementing those features.
Types ¶
type App ¶
type App struct { Options // Middleware, ErrorHandlers, router, and filepaths are moved to Home. Home // Routenamer for the app. This field provides the ability to override the // base route namer for something more specific to the app. RouteNamer RouteNamer // contains filtered or unexported fields }
App is where it all happens! It holds on to options, the underlying router, the middleware, and more. Without an App you can't do much!
func (*App) ANY ¶
ANY accepts a request across any HTTP method for the specified path and routes it to the specified Handler.
func (*App) Group ¶
Group creates a new `*App` that inherits from it's parent `*App`. This is useful for creating groups of end-points that need to share common functionality, like middleware.
g := a.Group("/api/v1") g.Use(AuthorizeAPIMiddleware) g.GET("/users, APIUsersHandler) g.GET("/users/:user_id, APIUserShowHandler)
func (*App) Mount ¶ added in v0.9.4
Mount mounts a http.Handler (or Buffalo app) and passes through all requests to it.
func muxer() http.Handler { f := func(res http.ResponseWriter, req *http.Request) { fmt.Fprintf(res, "%s - %s", req.Method, req.URL.String()) } mux := mux.NewRouter() mux.HandleFunc("/foo", f).Methods("GET") mux.HandleFunc("/bar", f).Methods("POST") mux.HandleFunc("/baz/baz", f).Methods("DELETE") return mux } a.Mount("/admin", muxer()) $ curl -X DELETE http://localhost:3000/admin/baz/baz
func (*App) Muxer ¶ added in v0.13.0
Muxer returns the underlying mux router to allow for advance configurations
func (*App) PanicHandler ¶ added in v0.8.2
PanicHandler recovers from panics gracefully and calls the error handling code for a 500 error.
func (*App) Redirect ¶ added in v0.7.3
Redirect from one URL to another URL. Only works for "GET" requests.
func (*App) Resource ¶ added in v0.4.3
Resource maps an implementation of the Resource interface to the appropriate RESTful mappings. Resource returns the *App associated with this group of mappings so you can set middleware, etc... on that group, just as if you had used the a.Group functionality.
Resource automatically creates a URL `/resources/new` if the resource has a function `New()`. So it could act as a restriction for the value of `resource_id`. URL `/resources/new` will always show the resource creation page instead of showing the resource called `new`.
a.Resource("/users", &UsersResource{}) // Is equal to this: ur := &UsersResource{} g := a.Group("/users") g.GET("/", ur.List) // GET /users => ur.List g.POST("/", ur.Create) // POST /users => ur.Create g.GET("/new", ur.New) // GET /users/new => ur.New g.GET("/{user_id}", ur.Show) // GET /users/{user_id} => ur.Show g.PUT("/{user_id}", ur.Update) // PUT /users/{user_id} => ur.Update g.DELETE("/{user_id}", ur.Destroy) // DELETE /users/{user_id} => ur.Destroy g.GET("/{user_id}/edit", ur.Edit) // GET /users/{user_id}/edit => ur.Edit
func (*App) RouteHelpers ¶ added in v0.13.0
func (a *App) RouteHelpers() map[string]RouteHelperFunc
RouteHelpers returns a map of BuildPathHelper() for each route available in the app.
func (*App) Serve ¶ added in v0.10.1
Serve the application at the specified address/port and listen for OS interrupt and kill signals and will attempt to stop the application gracefully. This will also start the Worker process, unless WorkerOff is enabled.
func (*App) ServeFiles ¶
func (a *App) ServeFiles(p string, root http.FileSystem)
ServeFiles maps an path to a directory on disk to serve static files. Useful for JavaScript, images, CSS, etc...
a.ServeFiles("/assets", http.Dir("path/to/assets"))
func (*App) ServeHTTP ¶
func (a *App) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP implements http.Handler
func (*App) Use ¶
func (a *App) Use(mw ...MiddlewareFunc)
Use the specified Middleware for the App. When defined on an `*App` the specified middleware will be inherited by any `Group` calls that are made on that on the App.
func (*App) VirtualHost ¶ added in v0.18.6
VirtualHost creates a new `*App` that inherits from it's parent `*App`. All pre-configured things on the parent App such as middlewares will be applied, and can be modified only for this child App.
This is a multi-homing feature similar to the `VirtualHost` in Apache or multiple `server`s in nginx. One important different behavior is that there is no concept of the `default` host in buffalo (at least for now) and the routing decision will be made with the "first match" manner. (e.g. if you have already set the route for '/' for the root App before setting up a virualhost, the route of the root App will be picked up even if the client makes a request to the specified domain.)
a.VirtualHost("www.example.com") a.VirtualHost("{subdomain}.example.com") a.VirtualHost("{subdomain:[a-z]+}.example.com")
type BaseResource ¶ added in v0.4.3
type BaseResource struct{}
BaseResource fills in the gaps for any Resource interface functions you don't want/need to implement.
type UsersResource struct { Resource } func (ur *UsersResource) List(c Context) error { return c.Render(http.StatusOK, render.String("hello") } // This will fulfill the Resource interface, despite only having // one of the functions defined. &UsersResource{&BaseResource{})
func (BaseResource) Create ¶ added in v0.4.3
func (v BaseResource) Create(c Context) error
Create default implementation. Returns a 404
func (BaseResource) Destroy ¶ added in v0.4.3
func (v BaseResource) Destroy(c Context) error
Destroy default implementation. Returns a 404
func (BaseResource) List ¶ added in v0.4.3
func (v BaseResource) List(c Context) error
List default implementation. Returns a 404
func (BaseResource) Show ¶ added in v0.4.3
func (v BaseResource) Show(c Context) error
Show default implementation. Returns a 404
func (BaseResource) Update ¶ added in v0.4.3
func (v BaseResource) Update(c Context) error
Update default implementation. Returns a 404
type Context ¶
type Context interface { context.Context Response() http.ResponseWriter Request() *http.Request Session() *Session Cookies() *Cookies Params() ParamValues Param(string) string Set(string, interface{}) LogField(string, interface{}) LogFields(map[string]interface{}) Logger() Logger Bind(interface{}) error Render(int, render.Renderer) error Error(int, error) error Redirect(int, string, ...interface{}) error Data() map[string]interface{} Flash() *Flash File(string) (binding.File, error) }
Context holds on to information as you pass it down through middleware, Handlers, templates, etc... It strives to make your life a happier one.
type Cookies ¶ added in v0.9.3
type Cookies struct {
// contains filtered or unexported fields
}
Cookies allows you to easily get cookies from the request, and set cookies on the response.
func (*Cookies) Delete ¶ added in v0.9.3
Delete sets a header that tells the browser to remove the cookie with the given name.
func (*Cookies) Get ¶ added in v0.9.3
Get returns the value of the cookie with the given name. Returns http.ErrNoCookie if there's no cookie with that name in the request.
func (*Cookies) Set ¶ added in v0.9.3
Set a cookie on the response, which will expire after the given duration.
func (*Cookies) SetWithExpirationTime ¶ added in v0.9.3
SetWithExpirationTime sets a cookie that will expire at a specific time. Note that the time is determined by the client's browser, so it might not expire at the expected time, for example if the client has changed the time on their computer.
func (*Cookies) SetWithPath ¶ added in v0.13.0
SetWithPath sets a cookie path on the server in which the cookie will be available on. If set to '/', the cookie will be available within the entire domain. If set to '/foo/', the cookie will only be available within the /foo/ directory and all sub-directories such as /foo/bar/ of domain.
type DefaultContext ¶
DefaultContext is, as its name implies, a default implementation of the Context interface.
func (*DefaultContext) Bind ¶
func (d *DefaultContext) Bind(value interface{}) error
Bind the interface to the request.Body. The type of binding is dependent on the "Content-Type" for the request. If the type is "application/json" it will use "json.NewDecoder". If the type is "application/xml" it will use "xml.NewDecoder". See the github.com/gobuffalo/buffalo/binding package for more details.
func (*DefaultContext) Cookies ¶ added in v0.9.3
func (d *DefaultContext) Cookies() *Cookies
Cookies for the associated request and response.
func (*DefaultContext) Data ¶
func (d *DefaultContext) Data() map[string]interface{}
Data contains all the values set through Get/Set.
func (*DefaultContext) File ¶ added in v0.10.3
func (d *DefaultContext) File(name string) (binding.File, error)
File returns an uploaded file by name, or an error
func (*DefaultContext) Flash ¶ added in v0.7.2
func (d *DefaultContext) Flash() *Flash
Flash messages for the associated Request.
func (*DefaultContext) LogField ¶
func (d *DefaultContext) LogField(key string, value interface{})
LogField adds the key/value pair onto the Logger to be printed out as part of the request logging. This allows you to easily add things like metrics (think DB times) to your request.
func (*DefaultContext) LogFields ¶
func (d *DefaultContext) LogFields(values map[string]interface{})
LogFields adds the key/value pairs onto the Logger to be printed out as part of the request logging. This allows you to easily add things like metrics (think DB times) to your request.
func (*DefaultContext) Logger ¶
func (d *DefaultContext) Logger() Logger
Logger returns the Logger for this context.
func (*DefaultContext) MarshalJSON ¶ added in v0.13.0
func (d *DefaultContext) MarshalJSON() ([]byte, error)
MarshalJSON implements json marshaling for the context
func (*DefaultContext) Param ¶
func (d *DefaultContext) Param(key string) string
Param returns a param, either named or query string, based on the key.
func (*DefaultContext) Params ¶
func (d *DefaultContext) Params() ParamValues
Params returns all of the parameters for the request, including both named params and query string parameters.
func (*DefaultContext) Redirect ¶
func (d *DefaultContext) Redirect(status int, url string, args ...interface{}) error
Redirect a request with the given status to the given URL.
func (*DefaultContext) Render ¶
func (d *DefaultContext) Render(status int, rr render.Renderer) error
Render a status code and render.Renderer to the associated Response. The request parameters will be made available to the render.Renderer "{{.params}}". Any values set onto the Context will also automatically be made available to the render.Renderer. To render "no content" pass in a nil render.Renderer.
func (*DefaultContext) Request ¶
func (d *DefaultContext) Request() *http.Request
Request returns the original Request.
func (*DefaultContext) Response ¶
func (d *DefaultContext) Response() http.ResponseWriter
Response returns the original Response for the request.
func (*DefaultContext) Session ¶
func (d *DefaultContext) Session() *Session
Session for the associated Request.
func (*DefaultContext) Set ¶
func (d *DefaultContext) Set(key string, value interface{})
Set a value onto the Context. Any value set onto the Context will be automatically available in templates.
func (*DefaultContext) String ¶ added in v0.9.0
func (d *DefaultContext) String() string
func (*DefaultContext) Value ¶ added in v0.7.2
func (d *DefaultContext) Value(key interface{}) interface{}
Value that has previously stored on the context.
type ErrorHandler ¶ added in v0.7.1
ErrorHandler interface for handling an error for a specific status code.
type ErrorHandlers ¶ added in v0.7.1
type ErrorHandlers map[int]ErrorHandler
ErrorHandlers is used to hold a list of ErrorHandler types that can be used to handle specific status codes.
a.ErrorHandlers[http.StatusInternalServerError] = func(status int, err error, c buffalo.Context) error { res := c.Response() res.WriteHeader(status) res.Write([]byte(err.Error())) return nil }
func (ErrorHandlers) Default ¶ added in v0.14.0
func (e ErrorHandlers) Default(eh ErrorHandler)
Default sets an error handler should a status code not already be mapped. This will replace the original default error handler. This is a *catch-all* handler.
func (ErrorHandlers) Get ¶ added in v0.7.1
func (e ErrorHandlers) Get(status int) ErrorHandler
Get a registered ErrorHandler for this status code. If no ErrorHandler has been registered, a default one will be returned.
type ErrorResponse ¶ added in v0.13.0
type ErrorResponse struct { XMLName xml.Name `json:"-" xml:"response"` Error string `json:"error" xml:"error"` Trace string `json:"trace,omitempty" xml:"trace,omitempty"` Code int `json:"code" xml:"code,attr"` }
ErrorResponse is a used to display errors as JSON or XML
type FS ¶ added in v0.18.1
type FS struct {
// contains filtered or unexported fields
}
FS wraps a directory and an embed FS that are expected to have the same contents. it prioritizes the directory FS and falls back to the embedded FS if the file cannot be found on disk. This is useful during development or when deploying with assets not embedded in the binary.
Additionally FS hiddes any file named embed.go from the FS.
func NewFS ¶ added in v0.18.1
NewFS returns a new FS that wraps the given directory and embedded FS. the embed.FS is expected to embed the same files as the directory FS.
func (FS) Open ¶ added in v0.18.1
Open opens the named file.
When Open returns an error, it should be of type *PathError with the Op field set to "open", the Path field set to name, and the Err field describing the problem.
Open should reject attempts to open names that do not satisfy ValidPath(name), returning a *PathError with Err set to ErrInvalid or ErrNotExist.
type Flash ¶ added in v0.7.2
type Flash struct {
// contains filtered or unexported fields
}
Flash is a struct that helps with the operations over flash messages.
func (Flash) Add ¶ added in v0.7.2
Add adds a flash value for a flash key, if the key already has values the list for that value grows.
func (*Flash) Clear ¶ added in v0.7.2
func (f *Flash) Clear()
Clear removes all keys from the Flash.
type HTTPError ¶ added in v0.7.2
HTTPError a typed error returned by http Handlers and used for choosing error handlers
type Handler ¶
Handler is the basis for all of Buffalo. A Handler will be given a Context interface that represents the give request/response. It is the responsibility of the Handler to handle the request/response correctly. This could mean rendering a template, JSON, etc... or it could mean returning an error.
func (c Context) error { return c.Render(http.StatusOK, render.String("Hello World!")) } func (c Context) error { return c.Redirect(http.StatusMovedPermanently, "http://github.com/gobuffalo/buffalo") } func (c Context) error { return c.Error(http.StatusUnprocessableEntity, fmt.Errorf("oops!!")) }
func RequestLoggerFunc ¶
RequestLoggerFunc is the default implementation of the RequestLogger. By default it will log a uniq "request_id", the HTTP Method of the request, the path that was requested, the duration (time) it took to process the request, the size of the response (and the "human" size), and the status code of the response.
func WrapHandler ¶
WrapHandler wraps a standard http.Handler and transforms it into a buffalo.Handler.
func WrapHandlerFunc ¶
func WrapHandlerFunc(h http.HandlerFunc) Handler
WrapHandlerFunc wraps a standard http.HandlerFunc and transforms it into a buffalo.Handler.
type Home ¶ added in v0.18.6
type Home struct { // moved from App // Middleware returns the current MiddlewareStack for the App/Group. Middleware *MiddlewareStack `json:"-"` ErrorHandlers ErrorHandlers `json:"-"` // contains filtered or unexported fields }
Home is a container for Domains and Groups that independently serves a group of pages with its own Middleware and ErrorHandlers. It is usually a multi-homed server domain or group of paths under a certain prefix.
While the App is for managing whole application life cycle along with its default Home, including initializing and stopping its all components such as listeners and long-running jobs, Home is only for a specific group of services to serve its service logic efficiently.
type Logger ¶
type Logger = logger.FieldLogger
Logger interface is used throughout Buffalo apps to log a whole manner of things.
type Middler ¶ added in v0.14.7
type Middler interface {
Use() []MiddlewareFunc
}
Middler can be implemented to specify additional middleware specific to the resource
type MiddlewareFunc ¶
MiddlewareFunc defines the interface for a piece of Buffalo Middleware.
func DoSomething(next Handler) Handler { return func(c Context) error { // do something before calling the next handler err := next(c) // do something after call the handler return err } }
type MiddlewareStack ¶
type MiddlewareStack struct {
// contains filtered or unexported fields
}
MiddlewareStack manages the middleware stack for an App/Group.
func (*MiddlewareStack) Clear ¶
func (ms *MiddlewareStack) Clear()
Clear wipes out the current middleware stack for the App/Group, any middleware previously defined will be removed leaving an empty middleware stack.
func (*MiddlewareStack) Remove ¶ added in v0.15.1
func (ms *MiddlewareStack) Remove(mws ...MiddlewareFunc)
Remove the specified Middleware(s) for the App/group. This is useful when the middleware will be skipped by the entire group.
a.Middleware.Remove(Authorization)
func (*MiddlewareStack) Replace ¶ added in v0.5.0
func (ms *MiddlewareStack) Replace(mw1 MiddlewareFunc, mw2 MiddlewareFunc)
Replace a piece of middleware with another piece of middleware. Great for testing.
func (*MiddlewareStack) Skip ¶
func (ms *MiddlewareStack) Skip(mw MiddlewareFunc, handlers ...Handler)
Skip a specified piece of middleware the specified Handlers. This is useful for things like wrapping your application in an authorization middleware, but skipping it for things the home page, the login page, etc...
a.Middleware.Skip(Authorization, HomeHandler, LoginHandler, RegistrationHandler)
func (MiddlewareStack) String ¶ added in v0.9.1
func (ms MiddlewareStack) String() string
func (*MiddlewareStack) Use ¶
func (ms *MiddlewareStack) Use(mw ...MiddlewareFunc)
Use the specified Middleware for the App. When defined on an `*App` the specified middleware will be inherited by any `Group` calls that are made on that on the App.
type Options ¶
type Options struct { Name string `json:"name"` // Addr is the bind address provided to http.Server. Default is "127.0.0.1:3000" // Can be set using ENV vars "ADDR" and "PORT". Addr string `json:"addr"` // Host that this application will be available at. Default is "http://127.0.0.1:[$PORT|3000]". Host string `json:"host"` // Env is the "environment" in which the App is running. Default is "development". Env string `json:"env"` // LogLvl defaults to logger.DebugLvl. LogLvl logger.Level `json:"log_lvl"` // Logger to be used with the application. A default one is provided. Logger Logger `json:"-"` // MethodOverride allows for changing of the request method type. See the default // implementation at buffalo.MethodOverride MethodOverride http.HandlerFunc `json:"-"` // SessionStore is the `github.com/gorilla/sessions` store used to back // the session. It defaults to use a cookie store and the ENV variable // `SESSION_SECRET`. SessionStore sessions.Store `json:"-"` // SessionName is the name of the session cookie that is set. This defaults // to "_buffalo_session". SessionName string `json:"session_name"` // Timeout in second for ongoing requests when shutdown the server. // The default value is 60. TimeoutSecondShutdown int `json:"timeout_second_shutdown"` // Worker implements the Worker interface and can process tasks in the background. // Default is "github.com/gobuffalo/worker.Simple. Worker worker.Worker `json:"-"` // WorkerOff tells App.Start() whether to start the Worker process or not. Default is "false". WorkerOff bool `json:"worker_off"` // PreHandlers are http.Handlers that are called between the http.Server // and the buffalo Application. PreHandlers []http.Handler `json:"-"` // PreWare takes an http.Handler and returns an http.Handler // and acts as a pseudo-middleware between the http.Server and // a Buffalo application. PreWares []PreWare `json:"-"` // CompressFiles enables gzip compression of static files served by ServeFiles using // gorilla's CompressHandler (https://godoc.org/github.com/gorilla/handlers#CompressHandler). // Default is "false". CompressFiles bool `json:"compress_files"` Prefix string `json:"prefix"` Context context.Context `json:"-"` // contains filtered or unexported fields }
Options are used to configure and define how your application should run.
func NewOptions ¶
func NewOptions() Options
NewOptions returns a new Options instance with sensible defaults
type ParamValues ¶
ParamValues will most commonly be url.Values, but isn't it great that you set your own? :)
type PreWare ¶ added in v0.9.4
PreWare takes an http.Handler and returns an http.Handler and acts as a pseudo-middleware between the http.Server and a Buffalo application.
type Resource ¶ added in v0.4.3
type Resource interface { List(Context) error Show(Context) error Create(Context) error Update(Context) error Destroy(Context) error }
Resource interface allows for the easy mapping of common RESTful actions to a set of paths. See the a.Resource documentation for more details. NOTE: When skipping Resource handlers, you need to first declare your resource handler as a type of buffalo.Resource for the Skip function to properly recognize and match it.
// Works: var cr Resource cr = &carsResource{&buffaloBaseResource{}} g = a.Resource("/cars", cr) g.Use(SomeMiddleware) g.Middleware.Skip(SomeMiddleware, cr.Show) // Doesn't Work: cr := &carsResource{&buffaloBaseResource{}} g = a.Resource("/cars", cr) g.Use(SomeMiddleware) g.Middleware.Skip(SomeMiddleware, cr.Show)
type Response ¶ added in v0.9.0
type Response struct { Status int Size int http.ResponseWriter }
Response implements the http.ResponseWriter interface and allows for the capture of the response status and size to be used for things like logging requests.
func (*Response) CloseNotify ¶ added in v0.9.0
CloseNotify implements the http.CloseNotifier interface
func (*Response) Hijack ¶ added in v0.9.0
Hijack implements the http.Hijacker interface to allow for things like websockets.
func (*Response) WriteHeader ¶ added in v0.9.0
WriteHeader sets the status code for a response
type RouteHelperFunc ¶ added in v0.8.2
RouteHelperFunc represents the function that takes the route and the opts and build the path
type RouteInfo ¶ added in v0.7.1
type RouteInfo struct { Method string `json:"method"` Path string `json:"path"` HandlerName string `json:"handler"` ResourceName string `json:"resourceName,omitempty"` PathName string `json:"pathName"` Aliases []string `json:"aliases"` MuxRoute *mux.Route `json:"-"` Handler Handler `json:"-"` App *App `json:"-"` }
RouteInfo provides information about the underlying route that was built.
func (*RouteInfo) Alias ¶ added in v0.9.3
Alias path patterns to the this route. This is not the same as a redirect.
func (*RouteInfo) BuildPathHelper ¶ added in v0.8.2
func (ri *RouteInfo) BuildPathHelper() RouteHelperFunc
BuildPathHelper Builds a routeHelperfunc for a particular RouteInfo
type RouteList ¶
type RouteList []*RouteInfo
RouteList contains a mapping of the routes defined in the application. This listing contains, Method, Path, and the name of the Handler defined to process that route.
type RouteNamer ¶ added in v0.16.19
type RouteNamer interface { // NameRoute receives the path and returns the name // for the route. NameRoute(string) string }
RouteNamer is in charge of naming a route from the path assigned, this name typically will be used if no name is assined with .Name(...).
type Session ¶
Session wraps the "github.com/gorilla/sessions" API in something a little cleaner and a bit more useable.
func (*Session) Delete ¶
func (s *Session) Delete(name interface{})
Delete a value from the current session.
func (*Session) Get ¶
func (s *Session) Get(name interface{}) interface{}
Get a value from the current session.
Source Files ¶
- app.go
- buffalo.go
- context.go
- cookies.go
- default_context.go
- error_templates.go
- errors.go
- events.go
- flash.go
- fs.go
- grifts.go
- handler.go
- home.go
- logger.go
- method_override.go
- middleware.go
- options.go
- plugins.go
- request_logger.go
- resource.go
- response.go
- route.go
- route_info.go
- route_mappings.go
- routenamer.go
- server.go
- session.go
- wrappers.go
Directories ¶
Path | Synopsis |
---|---|
internal
|
|
internal/mail
Package gomail provides a simple interface to compose emails and to mail them efficiently.
|
Package gomail provides a simple interface to compose emails and to mail them efficiently. |