Documentation ¶
Overview ¶
Package web contains a small web framework extension.
Index ¶
- func Decode(r *http.Request, val any) error
- func GetTime(ctx context.Context) time.Time
- func GetTraceID(ctx context.Context) string
- func IsShutdown(err error) bool
- func NewShutdownError(message string) error
- func Param(r *http.Request, key string) string
- func Respond(ctx context.Context, w http.ResponseWriter, data any, statusCode int) error
- func SetParam(r *http.Request, key string, value string)
- type App
- func (a *App) EnableCORS(mw MidHandler)
- func (a *App) Handle(method string, group string, path string, handler Handler, mw ...MidHandler)
- func (a *App) HandleNoMiddleware(method string, group string, path string, handler Handler)
- func (a *App) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (a *App) SignalShutdown()
- type Handler
- type MidHandler
- type Values
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Decode ¶
Decode reads the body of an HTTP request looking for a JSON document. The body is decoded into the provided value. If the provided value is a struct then it is checked for validation tags. If the value implements a validate function, it is executed.
func GetTraceID ¶
GetTraceID returns the trace id from the context.
func IsShutdown ¶
IsShutdown checks to see if the shutdown error is contained in the specified error value.
func NewShutdownError ¶
NewShutdownError returns an error that causes the framework to signal a graceful shutdown.
Types ¶
type App ¶
type App struct {
// contains filtered or unexported fields
}
App is the entrypoint into our application and what configures our context object for each of our http handlers. Feel free to add any configuration data/logic on this App struct.
func NewApp ¶
func NewApp(shutdown chan os.Signal, mw ...MidHandler) *App
NewApp creates an App value that handle a set of routes for the application.
func (*App) EnableCORS ¶
func (a *App) EnableCORS(mw MidHandler)
EnableCORS enables CORS preflight requests to work in the middleware. It prevents the MethodNotAllowedHandler from being called. This must be enabled for the CORS middleware to work.
func (*App) Handle ¶
Handle sets a handler function for a given HTTP method and path pair to the application server mux.
func (*App) HandleNoMiddleware ¶
HandleNoMiddleware sets a handler function for a given HTTP method and path pair to the application server mux. Does not include the application middleware or OTEL tracing.
func (*App) ServeHTTP ¶
func (a *App) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP implements the http.Handler interface. It's the entry point for all http traffic and allows the opentelemetry mux to run first to handle tracing. The opentelemetry mux then calls the application mux to handle application traffic. This was set up on line 44 in the NewApp function.
func (*App) SignalShutdown ¶
func (a *App) SignalShutdown()
SignalShutdown is used to gracefully shut down the app when an integrity issue is identified.
type Handler ¶
A Handler is a type that handles a http request within our own little mini framework.
type MidHandler ¶
MidHandler is a handler function designed to run code before and/or after another Handler. It is designed to remove boilerplate or other concerns not direct to any given app Handler.