web

package
v1.26.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2026 License: MIT Imports: 20 Imported by: 24

Documentation

Index

Constants

View Source
const MockAfterMiddlewares = "MockAfterMiddlewares"

MockAfterMiddlewares is a general mock point, it's between middlewares and the handler

Variables

This section is empty.

Functions

func Bind

func Bind[T any](_ T) http.HandlerFunc

Bind binding an obj to a handler's context data

func GetForm

func GetForm(dataStore reqctx.RequestDataStore) any

GetForm returns the validate form information

func RegisterResponseStatusProvider added in v1.21.0

func RegisterResponseStatusProvider[T any](fn func(req *http.Request) types.ResponseStatusProvider)

func RouteMock added in v1.21.0

func RouteMock(pointName string, h any) func()

RouteMock uses the registered mock point to mock the route execution, example:

defer web.RouteMockReset()
web.RouteMock(web.MockAfterMiddlewares, func(ctx *context.Context) {
	ctx.WriteResponse(...)
}

Then the mock function will be executed as a middleware at the mock point. It only takes effect in testing mode (setting.IsInTesting == true).

func RouteMockReset added in v1.21.0

func RouteMockReset()

RouteMockReset resets all mock points (no mock anymore)

func RouterMockPoint added in v1.23.0

func RouterMockPoint(pointName string) func(next http.Handler) http.Handler

RouterMockPoint registers a mock point as a middleware for testing, example:

r.Use(web.RouterMockPoint("my-mock-point-1"))
r.Get("/foo", middleware2, web.RouterMockPoint("my-mock-point-2"), middleware2, handler)

Then use web.RouteMock to mock the route execution. It only takes effect in testing mode (setting.IsInTesting == true).

func SetForm

func SetForm(dataStore reqctx.ContextDataProvider, obj any)

SetForm set the form object

Types

type Combo

type Combo struct {
	// contains filtered or unexported fields
}

Combo represents a tiny group routes with same pattern

func (*Combo) Delete

func (c *Combo) Delete(h ...any) *Combo

Delete delegates Delete method

func (*Combo) Get

func (c *Combo) Get(h ...any) *Combo

Get delegates Get method

func (*Combo) Patch

func (c *Combo) Patch(h ...any) *Combo

Patch delegates Patch method

func (*Combo) Post

func (c *Combo) Post(h ...any) *Combo

Post delegates Post method

func (*Combo) Put

func (c *Combo) Put(h ...any) *Combo

Put delegates Put method

type PreMiddlewareProvider added in v1.26.0

type PreMiddlewareProvider func(next http.Handler) http.Handler

PreMiddlewareProvider is a special middleware provider which will be executed before other middlewares on the same "routing" level (AfterRouting/Group/Methods/Any, but not BeforeRouting). A route can do something (e.g.: set middleware options) at the place where it is declared, and the code will be executed before other middlewares which are added before the declaration. Use cases: mark a route with some meta info, set some options for middlewares, etc.

type Router added in v1.23.0

type Router struct {
	// contains filtered or unexported fields
}

Router defines a route based on chi's router

func NewRouter added in v1.23.0

func NewRouter() *Router

NewRouter creates a new route

func (*Router) AfterRouting added in v1.26.0

func (r *Router) AfterRouting(middlewares ...any)

AfterRouting adds middlewares which will be executed after the request path gets routed It can see the routed path and resolved path parameters

func (*Router) Any added in v1.23.0

func (r *Router) Any(pattern string, h ...any)

Any delegate requests for all methods

func (*Router) BeforeRouting added in v1.26.0

func (r *Router) BeforeRouting(middlewares ...any)

BeforeRouting adds middlewares which will be executed before the request path gets routed It should only be used for framework-level global middlewares when it needs to change request method & path.

func (*Router) Combo added in v1.23.0

func (r *Router) Combo(pattern string, h ...any) *Combo

Combo delegates requests to Combo

func (*Router) Delete added in v1.23.0

func (r *Router) Delete(pattern string, h ...any)

Delete delegate delete method

func (*Router) Get added in v1.23.0

func (r *Router) Get(pattern string, h ...any)

Get delegate get method

func (*Router) Group added in v1.23.0

func (r *Router) Group(pattern string, fn func(), middlewares ...any)

Group mounts a sub-router along a "pattern" string.

func (*Router) Head added in v1.23.0

func (r *Router) Head(pattern string, h ...any)

Head delegate head method

func (*Router) Methods added in v1.23.0

func (r *Router) Methods(methods, pattern string, h ...any)

Methods adds the same handlers for multiple http "methods" (separated by ","). If any method is invalid, the lower level router will panic.

func (*Router) Mount added in v1.23.0

func (r *Router) Mount(pattern string, subRouter *Router)

Mount attaches another Router along "/pattern/*"

func (*Router) NotFound added in v1.23.0

func (r *Router) NotFound(h http.HandlerFunc)

NotFound defines a handler to respond whenever a route could not be found.

func (*Router) Patch added in v1.23.0

func (r *Router) Patch(pattern string, h ...any)

Patch delegate patch method

func (*Router) PathGroup added in v1.24.0

func (r *Router) PathGroup(pattern string, fn func(g *RouterPathGroup), h ...any)

PathGroup creates a group of paths which could be matched by regexp. It is only designed to resolve some special cases which chi router can't handle. For most cases, it shouldn't be used because it needs to iterate all rules to find the matched one (inefficient).

func (*Router) Post added in v1.23.0

func (r *Router) Post(pattern string, h ...any)

Post delegate post method

func (*Router) Put added in v1.23.0

func (r *Router) Put(pattern string, h ...any)

Put delegate put method

func (*Router) ServeHTTP added in v1.23.0

func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request)

ServeHTTP implements http.Handler

type RouterPathGroup added in v1.24.0

type RouterPathGroup struct {
	// contains filtered or unexported fields
}

func (*RouterPathGroup) MatchPath added in v1.24.0

func (g *RouterPathGroup) MatchPath(methods, pattern string, h ...any)

MatchPath matches the request method, and uses regexp to match the path. The pattern uses "<...>" to define path parameters, for example, "/<name>" (different from chi router) It is only designed to resolve some special cases that chi router can't handle. For most cases, it shouldn't be used because it needs to iterate all rules to find the matched one (inefficient).

func (*RouterPathGroup) MatchPattern added in v1.25.0

func (g *RouterPathGroup) MatchPattern(methods string, pattern *RouterPathGroupPattern, h ...any)

func (*RouterPathGroup) PatternRegexp added in v1.25.0

func (g *RouterPathGroup) PatternRegexp(pattern string, h ...any) *RouterPathGroupPattern

func (*RouterPathGroup) ServeHTTP added in v1.24.0

func (g *RouterPathGroup) ServeHTTP(resp http.ResponseWriter, req *http.Request)

type RouterPathGroupPattern added in v1.25.0

type RouterPathGroupPattern struct {
	// contains filtered or unexported fields
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL