Documentation ¶
Index ¶
- func HandleErrors(handlers ...func(err error)) router.MiddlewareFunc
- func Register(ctx context.Context) error
- func Run(requestHttp *http.Request, requestStruct any) error
- func Validate(request *http.Request, v any) error
- type HTMLError
- type HTMLResponse
- type HTTPError
- type JSONResponse
- type Message
- type MessageOptions
- type RequestHandler
- type Responder
- type Response
- type ValidationError
- type Validator
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func HandleErrors ¶
func HandleErrors(handlers ...func(err error)) router.MiddlewareFunc
Types ¶
type HTMLResponse ¶
type HTMLResponse struct {
Response
}
func NewHTMLResponse ¶
func NewHTMLResponse(data []byte) *HTMLResponse
type HTTPError ¶
type HTTPError struct {
// contains filtered or unexported fields
}
func NewHTTPError ¶
type JSONResponse ¶
type JSONResponse struct {
// contains filtered or unexported fields
}
func NewJSONResponse ¶
func NewJSONResponse(data any) *JSONResponse
func (*JSONResponse) AddHeader ¶
func (r *JSONResponse) AddHeader(key, value string) *JSONResponse
func (*JSONResponse) Respond ¶
func (r *JSONResponse) Respond(w http.ResponseWriter, _ *http.Request) error
func (*JSONResponse) SetStatus ¶
func (r *JSONResponse) SetStatus(status int) *JSONResponse
type Message ¶
type Message struct { Array string `json:"array"` String string `json:"string"` Numeric string `json:"numeric"` }
func (*Message) UnmarshalJSON ¶
type MessageOptions ¶
type RequestHandler ¶
type RequestHandler[TRequest, TResponse any] struct { // contains filtered or unexported fields }
func Handler ¶
func Handler[TRequest, TResponse any](callback func(r *TRequest) (TResponse, error)) *RequestHandler[TRequest, TResponse]
Handler is a helper to create http handlers with built in input validation and error handling.
Example (Error) ¶
package main import ( "fmt" "net/http" "net/http/httptest" "github.com/abibby/salusa/request" ) func main() { type ExampleRequest struct { A int `query:"a" validate:"min:1"` } type ExampleResponse struct { } h := request.Handler(func(r *ExampleRequest) (*ExampleResponse, error) { return &ExampleResponse{}, nil }) rw := httptest.NewRecorder() h.ServeHTTP( rw, httptest.NewRequest("GET", "/?a=-1", http.NoBody), ) fmt.Println(rw.Result().StatusCode) }
Output: 422
Example (Input) ¶
package main import ( "fmt" "net/http" "net/http/httptest" "github.com/abibby/salusa/request" ) func main() { type ExampleRequest struct { A int `query:"a"` B int `query:"b"` } type ExampleResponse struct { Sum int `json:"sum"` } h := request.Handler(func(r *ExampleRequest) (*ExampleResponse, error) { return &ExampleResponse{ Sum: r.A + r.B, }, nil }) rw := httptest.NewRecorder() h.ServeHTTP( rw, httptest.NewRequest("GET", "/?a=10&b=5", http.NoBody), ) fmt.Println(rw.Body) }
Output: { "sum": 15 }
func (*RequestHandler[TRequest, TResponse]) Run ¶ added in v0.8.0
func (h *RequestHandler[TRequest, TResponse]) Run(r *TRequest) (TResponse, error)
func (*RequestHandler[TRequest, TResponse]) ServeHTTP ¶
func (h *RequestHandler[TRequest, TResponse]) ServeHTTP(w http.ResponseWriter, r *http.Request)
type Response ¶
type Response struct {
// contains filtered or unexported fields
}
func NewResponse ¶
type ValidationError ¶
func (ValidationError) AddError ¶
func (e ValidationError) AddError(key string, message string)
func (ValidationError) Error ¶
func (e ValidationError) Error() string
func (ValidationError) HTMLError ¶ added in v0.8.0
func (e ValidationError) HTMLError() string
func (ValidationError) HasErrors ¶
func (e ValidationError) HasErrors() bool
func (ValidationError) Merge ¶
func (e ValidationError) Merge(vErr ValidationError)
Source Files ¶
Click to show internal directories.
Click to hide internal directories.