package lazyroutes ¶
import "golazy.dev/lazyroutes"
Constants ¶
const LazyDevRoutesPath ¶
const LazyDevRoutesPath = "/routes"
Functions ¶
func Handle ¶
func Handle(action Action) http.Handler
func RegisterLazyDevHandlers ¶
func RegisterLazyDevHandlers(controlPlane *lazycontrolplane.ControlPlane, router *Scope)
Types ¶
type Action ¶
type Action func(http.ResponseWriter, *http.Request) error
type ModelRoutes ¶
type ModelRoutes struct {
Create string
Update string
Delete string
}
type Resource ¶
type Resource struct {
// contains filtered or unexported fields
}
func (r *Resource) Delete ¶
func (r *Resource) Delete(path string, action any)
func (r *Resource) Get ¶
func (r *Resource) Get(path string, action any)
func (r *Resource) MemberDelete ¶
func (r *Resource) MemberDelete(path string, action any)
func (r *Resource) MemberGet ¶
func (r *Resource) MemberGet(path string, action any)
func (r *Resource) MemberPatch ¶
func (r *Resource) MemberPatch(path string, action any)
func (r *Resource) MemberPost ¶
func (r *Resource) MemberPost(path string, action any)
func (r *Resource) MemberPut ¶
func (r *Resource) MemberPut(path string, action any)
func (r *Resource) Model ¶
func (r *Resource) Model(models ...any) *Resource
func (r *Resource) Param ¶
func (r *Resource) Param(name string) *Resource
func (r *Resource) Patch ¶
func (r *Resource) Patch(path string, action any)
func (r *Resource) Path ¶
func (r *Resource) Path(path string) *Resource
func (r *Resource) Plural ¶
func (r *Resource) Plural(name string) *Resource
func (r *Resource) Post ¶
func (r *Resource) Post(path string, action any)
func (r *Resource) Put ¶
func (r *Resource) Put(path string, action any)
func (r *Resource) Resources ¶
func (r *Resource) Resources(controller any, configure ...func(*Resource)) *Resource
func (r *Resource) Singular ¶
func (r *Resource) Singular(name string) *Resource
type Route ¶
Route is the metadata for one registered route.
type Route struct {
Method string `json:"method"`
Path string `json:"path"`
Name string `json:"name"`
Controller string `json:"controller,omitempty"`
Action string `json:"action,omitempty"`
Namespace string `json:"namespace,omitempty"`
NamedParams map[string]bool `json:"params"`
}
func RouteFromContext ¶
RouteFromContext returns the route metadata and parameter values attached to a request context.
func RouteFromContext(ctx context.Context) (Route, map[string]string, bool)
func RouteFromRequest ¶
RouteFromRequest returns the route metadata and parameter values attached to the request context.
func RouteFromRequest(r *http.Request) (Route, map[string]string, bool)
type RouteTable ¶
RouteTable is the list of routes registered during Draw.
type RouteTable []Route
type Scope ¶
Scope is the routing DSL entrypoint used by application routes. It embeds the standard library ServeMux so the same object is directly usable as an http.Handler.
type Scope struct {
*http.ServeMux
Context context.Context
Routes RouteTable
// contains filtered or unexported fields
}
func New ¶
New builds a scope with the framework's public-file fallback already wired.
func New(ctx context.Context) *Scope
func (s *Scope) As ¶
As creates a child scope with a route-name prefix.
func (s *Scope) As(name string, draw ...func(*Scope)) *Scope
func (s *Scope) Delete ¶
func (s *Scope) Delete(path string, controller any, action any)
func (s *Scope) Get ¶
func (s *Scope) Get(path string, controller any, action any)
func (s *Scope) HandleFunc ¶
HandleFunc registers a non-controller route action.
func (s *Scope) HandleFunc(method, path string, handlerAction Action)
func (s *Scope) HandlesPath ¶
func (s *Scope) HandlesPath(path string) bool
func (s *Scope) ModelRoutesFor ¶
func (s *Scope) ModelRoutesFor(model any) (ModelRoutes, bool)
func (s *Scope) Namespace ¶
Namespace creates a child scope with path, route-name, and namespace prefixes.
func (s *Scope) Namespace(name string, draw ...func(*Scope)) *Scope
func (s *Scope) Patch ¶
func (s *Scope) Patch(path string, controller any, action any)
func (s *Scope) Path ¶
Path creates a child scope with a path prefix.
func (s *Scope) Path(path string, draw ...func(*Scope)) *Scope
func (s *Scope) PathFor ¶
PathFor builds a path from a named route and route parameter values.
func (s *Scope) PathFor(name string, values ...any) (string, error)
func (s *Scope) PathForModel ¶
func (s *Scope) PathForModel(model any, action string) (string, error)
func (s *Scope) Post ¶
func (s *Scope) Post(path string, controller any, action any)
func (s *Scope) Put ¶
func (s *Scope) Put(path string, controller any, action any)
func (s *Scope) RegisterHelpers ¶
RegisterHelpers returns template helpers provided by the router.
func (s *Scope) RegisterHelpers() map[string]any
func (s *Scope) Resources ¶
func (s *Scope) Resources(controller any, configure ...func(*Resource)) *Resource
func (s *Scope) ServeHTTP ¶
func (s *Scope) ServeHTTP(w http.ResponseWriter, r *http.Request)
Directories ¶
| Path | Synopsis |
|---|---|
| lazyroutes/actioncall | Package actioncall compiles and invokes controller action call plans for lazyroutes. |
Package lazyroutes provides the GoLazy route scope, named route helpers, REST resources, request route metadata, and controller action binding.
In a normal app, lazyapp.New creates the root Scope and passes it to the application's Draw function. Routes register controller constructors and actions; the router constructs controllers from context, binds request-local state, runs optional BeforeAction hooks, and renders matching views when an action returns without writing a response.
The router can also be used directly as an http.Handler. HandleFunc is useful for small route tables or low-level tests, while Resources and Namespace provide the conventional GoLazy application shape.