Documentation
¶
Index ¶
- func Decode(r *http.Request, val any) error
- 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
- type App
- type Handler
- type MidHandler
- type NoResponse
- 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 ¶
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 (*App) HandleFunc ¶
func (a *App) HandleFunc(pattern string, handler Handler, mw ...MidHandler)
func (*App) HandleFuncNoMiddleware ¶
func (a *App) HandleFuncNoMiddleware(pattern string, handler Handler, mw ...MidHandler)
HandleFuncNoMiddleware sets a handler function for a given HTTP method and path pair to the application server mux with no middleware.
func (*App) SignalShutdown ¶
func (a *App) SignalShutdown()
SignalShutdown is used to gracefully shut down the app when an integrity issue is identified.
type Handler ¶
Handler HandlerFunc represents a function 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.
type NoResponse ¶
type NoResponse struct{}
NoResponse tells the Respond function to not respond to the request. In these cases the app layer code has already done so.