web

package
v3.1.21 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2026 License: MIT Imports: 18 Imported by: 0

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

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

func RouteMock

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

func RouteMockReset()

RouteMockReset resets all mock points (no mock anymore)

func RouterMockPoint

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 Router

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

Router defines a route based on chi's router

func NewRouter

func NewRouter() *Router

NewRouter creates a new route

func (*Router) Any

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

Any delegate requests for all methods

func (*Router) ChiRouter

func (r *Router) ChiRouter() chi.Router

ChiRouter returns the underlying chi.Router for plugin compatibility

func (*Router) Combo

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

Combo delegates requests to Combo

func (*Router) Delete

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

Delete delegate delete method

func (*Router) Get

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

Get delegate get method

func (*Router) Group

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

Group mounts a sub-Router along a `pattern` string.

func (*Router) Head

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

Head delegate head method

func (*Router) Methods

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

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

Mount attaches another Router along ./pattern/*

func (*Router) NotFound

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

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

func (*Router) Patch

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

Patch delegate patch method

func (*Router) PathGroup

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

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

Post delegate post method

func (*Router) Put

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

Put delegate put method

func (*Router) ServeHTTP

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

ServeHTTP implements http.Handler

func (*Router) Use

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

Use supports two middlewares

type RouterPathGroup

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

func (*RouterPathGroup) MatchPath

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

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

func (*RouterPathGroup) PatternRegexp

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

func (*RouterPathGroup) ServeHTTP

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

type RouterPathGroupPattern

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

Source Files

  • handler.go
  • routemock.go
  • router.go
  • router_combo.go
  • router_path.go

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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