Documentation ¶
Overview ¶
Package chttp helps setup a http server with routing, middlewares, and more.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var URLParams = mux.Vars
URLParams returns the route variables for the current request, if any
var WireModule = wire.NewSet( NewReaderWriter, NewRequestLoggerMiddleware, wire.Struct(new(NewServerParams), "*"), NewServer, )
WireModule can be used as part of google/wire setup.
Functions ¶
func NewHandler ¶
func NewHandler(p NewHandlerParams) http.Handler
NewHandler creates a http.Handler with the given routes and middlewares. The handler can be used with a http.Server or as an argument to StartServer.
Types ¶
type Middleware ¶
Middleware is a function that takes in a http.Handler and returns one as well. It allows you to execute code before or after calling the handler.
type NewHandlerParams ¶
type NewHandlerParams struct { Routers []Router GlobalMiddlewares []Middleware }
NewHandlerParams holds the params needed for NewHandler.
type NewServerParams ¶
type NewServerParams struct { Handler http.Handler Lifecycle *copper.Lifecycle Config cconfig.Config Logger clogger.Logger }
NewServerParams holds the params needed to create a server.
type ReaderWriter ¶
type ReaderWriter struct {
// contains filtered or unexported fields
}
ReaderWriter provides functions to read data from HTTP requests and write response bodies in various formats
func NewReaderWriter ¶
func NewReaderWriter(config cconfig.Config, logger clogger.Logger) *ReaderWriter
NewReaderWriter instantiates a new ReaderWriter with its dependencies
func (*ReaderWriter) ReadJSON ¶
func (rw *ReaderWriter) ReadJSON(w http.ResponseWriter, req *http.Request, body interface{}) bool
ReadJSON reads JSON from the http.Request into the body var. If the body struct has validate tags on it, the struct is also validated. If the validation fails, a BadRequest response is sent back and the function returns false.
func (*ReaderWriter) WriteJSON ¶
func (rw *ReaderWriter) WriteJSON(w http.ResponseWriter, p WriteJSONParams)
WriteJSON writes a JSON response to the http.ResponseWriter. It can be configured with status code and data using WriteJSONParams.
type RequestLoggerMiddleware ¶
type RequestLoggerMiddleware struct {
// contains filtered or unexported fields
}
RequestLoggerMiddleware logs each request's HTTP method, path, and status code along with user uuid (from basic auth) if any.
func NewRequestLoggerMiddleware ¶
func NewRequestLoggerMiddleware(logger clogger.Logger) *RequestLoggerMiddleware
NewRequestLoggerMiddleware creates a new RequestLoggerMiddleware.
type Route ¶
type Route struct { Middlewares []Middleware Path string Methods []string Handler http.HandlerFunc }
Route represents a single HTTP route (ex. /api/profile) that can be configured with middlewares, path, HTTP methods, and a handler.
type Router ¶
type Router interface {
Routes() []Route
}
Router is used to group routes together that are returned by the Routes method.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server represents a configurable HTTP server that supports graceful shutdown.
type WriteJSONParams ¶
type WriteJSONParams struct { StatusCode int Data interface{} }
WriteJSONParams holds the params for the WriteJSON function in ReaderWriter