router

package module
v1.2.10 Latest Latest
Warning

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

Go to latest
Published: Aug 1, 2025 License: BSD-3-Clause Imports: 9 Imported by: 9

README

Router

Router for go (extending gin)

GoDoc GitHub stars Go Report Card codecov

Versions

Stable Version GitHub Release GitHub Release

Installation

To install the router package, use the following Go command:

go get -u github.com/gouef/router

Contributors

JanGalek actions-user dependabot[bot]

Documentation

Index

Constants

View Source
const (
	// DebugMode indicates Mode is debug.
	DebugMode = "debug"
	// ReleaseMode indicates Mode is release.
	ReleaseMode = "release"
	// TestMode indicates Mode is test.
	TestMode = "test"
)

Variables

This section is empty.

Functions

func CreateRoute added in v0.2.0

func CreateRoute[T any](r *Router, name string, pattern string, handler func(c *gin.Context, p *T), method Method) error

CreateRoute add generic route to router. Name: Name id for url construct Pattern: path to route, example "/users/:id". Handler: func(c *gin.Context, p *struct) Method: Method

Example:

 CreateRoute(router, "user:detail", "/users/:id", func(c *gin.Context, p *struct{
		ID int `uri:"id" binding:"required"`
	}) {
	    // code
		c.JSON(http.StatusOK, gin.H{
			"id": p.ID,
		})
	}, Get)

func EnableDebug added in v0.8.0

func EnableDebug()

EnableDebug set Mode debug for gin

func EnableRelease added in v0.8.0

func EnableRelease()

EnableRelease set Mode release for gin

func EnableTest added in v0.8.0

func EnableTest()

EnableTest set Mode test for gin

func GenerateUrlByPattern added in v0.6.1

func GenerateUrlByPattern(pattern string, params map[string]interface{}) (string, error)

GenerateUrlByPattern generate url by Pattern

func GetMode added in v0.8.0

func GetMode() string

GetMode return gin Mode

func GouefMiddleware added in v1.2.5

func GouefMiddleware() gin.HandlerFunc

func IsDebug added in v0.8.0

func IsDebug() bool

IsDebug if gin Mode is debug

func IsRelease added in v0.8.0

func IsRelease() bool

IsRelease if gin Mode is release

func IsTest added in v0.8.0

func IsTest() bool

IsTest if gin Mode is test

func SetMode added in v0.8.0

func SetMode(mode string)

SetMode set Mode for gin

Types

type ErrorHandlerFunc added in v0.4.0

type ErrorHandlerFunc func(c *gin.Context)

type HandlerContext added in v1.2.6

type HandlerContext func(c *gin.Context)

type HandlerContextParam added in v1.2.6

type HandlerContextParam[T any] func(c *gin.Context, p *T)

type HandlerFunc added in v1.2.6

type HandlerFunc func(response *Response, request *Request)

type HandlerParamFunc added in v1.2.6

type HandlerParamFunc[T any] func(response *Response, request *Request, p *T)

type Method

type Method int
const (
	Get Method = iota
	Post
	Head
	Put
	Delete
	Patch
	Options
	Connect
	Trace
)

func MethodFromString added in v1.2.0

func MethodFromString(method string) (Method, bool)

func (Method) String

func (m Method) String() string

type Request added in v1.2.6

type Request struct {
	Context *gin.Context
}

Request struct to work with input data

func (*Request) GetBody added in v1.2.6

func (req *Request) GetBody(dest interface{}) error

GetBody read JSON body to struct

func (*Request) GetParam added in v1.2.6

func (req *Request) GetParam(name string) string

GetParam return value of GET param

type Response added in v1.2.6

type Response struct {
	Context *gin.Context
}

func (*Response) SendJSON added in v1.2.6

func (r *Response) SendJSON(data interface{})

SendJSON send JSON response

func (*Response) SendTemplate added in v1.2.6

func (r *Response) SendTemplate(name string, data interface{})

SendTemplate render HTML template

func (*Response) SendXML added in v1.2.6

func (r *Response) SendXML(data interface{})

SendXML send XML response

type Route

type Route struct {
	Name    string
	Pattern string
	Handler interface{}
	Method  Method
}

func NewRoute

func NewRoute(name string, pattern string, handler interface{}, method Method) *Route

NewRoute create Route

func (*Route) GetHandler added in v0.2.2

func (r *Route) GetHandler() interface{}

GetHandler get route Handler

func (*Route) GetMethod added in v0.6.1

func (r *Route) GetMethod() Method

GetMethod get route Method

func (*Route) GetName added in v0.6.1

func (r *Route) GetName() string

GetName get route Name

func (*Route) GetPattern added in v0.2.2

func (r *Route) GetPattern() string

GetPattern get route Pattern

type RouteList

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

func CreateRouteList added in v0.2.2

func CreateRouteList(pattern string) *RouteList

CreateRouteList create RouteList

func NewRouteList

func NewRouteList() *RouteList

NewRouteList create RouteList with empty Pattern

func (*RouteList) Add added in v0.2.2

func (l *RouteList) Add(name string, pattern string, handler interface{}, method Method) *RouteList

Add create route for RouteList

func (*RouteList) AddChild added in v0.6.1

func (l *RouteList) AddChild(child *RouteList) *RouteList

AddChild add child of RouteList

func (*RouteList) AddRoute added in v0.2.2

func (l *RouteList) AddRoute(r *Route) *RouteList

AddRoute add Route to RouteList

type Router

type Router struct {
	Router *gin.Engine
	Routes map[string]*Route

	ErrorHandlers  map[int]ErrorHandlerFunc
	DefaultHandler ErrorHandlerFunc
	Mode           *mode.Mode
	// contains filtered or unexported fields
}

func NewRouter added in v0.2.0

func NewRouter() *Router

NewRouter create new Router

func (*Router) AddMultiMethodsRoute added in v0.2.0

func (r *Router) AddMultiMethodsRoute(name string, pattern string, handler interface{}, methods []Method) *Router

AddMultiMethodsRoute add route with multiple methods to router. Name: Name id for url construct Pattern: path to route, example "/users/:id". Handler: func(c *gin.Context, p *struct) methods: []Method

Example:

router.AddMultiMethodsRoute("user:detail", "/users/:id", func(c *gin.Context, p *struct{
	ID int `uri:"id" binding:"required"`
}) {
	// code
	c.JSON(http.StatusOK, gin.H{
			"id": p.ID,
		})
	}, []Method{Get, Post},
)

func (*Router) AddRoute added in v0.2.0

func (r *Router) AddRoute(name string, pattern string, handler interface{}, method Method) error

AddRoute add route to router. Name: Name id for url construct Pattern: path to route, example "/users/:id". Handler: func(c *gin.Context, p *struct) Method: Method

Example:

router.AddRoute("user:detail", "/users/:id", func(c *gin.Context, p *struct{
	ID int `uri:"id" binding:"required"`
}) {
    // code
	c.JSON(http.StatusOK, gin.H{
		"id": p.ID,
	})
}, Get)

func (*Router) AddRouteConnect added in v0.2.2

func (r *Router) AddRouteConnect(name string, pattern string, handler interface{}) error

func (*Router) AddRouteDelete added in v0.2.2

func (r *Router) AddRouteDelete(name string, pattern string, handler interface{}) error

AddRouteDelete add Delete route to router. Name: Name id for url construct Pattern: path to route, example "/users/:id". Handler: func(c *gin.Context, p *struct)

Example:

router.AddRouteDelete("user:detail", "/users/:id", func(c *gin.Context, p *struct{
	ID int `uri:"id" binding:"required"`
}) {
    // code
	c.JSON(http.StatusOK, gin.H{
		"id": p.ID,
	})
})

func (*Router) AddRouteGet added in v0.2.0

func (r *Router) AddRouteGet(name string, pattern string, handler interface{}) error

AddRouteGet add GET route to router. Name: Name id for url construct Pattern: path to route, example "/users/:id". Handler: func(c *gin.Context, p *struct)

Example:

router.AddRouteGet("user:detail", "/users/:id", func(c *gin.Context, p *struct{
	ID int `uri:"id" binding:"required"`
}) {
    // code
	c.JSON(http.StatusOK, gin.H{
		"id": p.ID,
	})
})

func (*Router) AddRouteHead added in v0.2.2

func (r *Router) AddRouteHead(name string, pattern string, handler interface{}) error

func (*Router) AddRouteList added in v0.2.2

func (r *Router) AddRouteList(l *RouteList) error

AddRouteList add RouteList to router Example:

lr := NewRouteList()
v1 := CreateRouteList("/v1")
lr.addChild(v1)

lr.Add("/:locale/products/:id", productDetailHandler, Get)
v1.Add("/:locale/products/:id", productDetailHandler, Get)

router := NewRouter()
router.AddRouteList(lr)

func (*Router) AddRouteMethod added in v0.2.2

func (r *Router) AddRouteMethod(name string, pattern string, handler interface{}, method Method) error

AddRouteMethod add route to router. Name: Name id for url construct Pattern: path to route, example "/users/:id". Handler: func(c *gin.Context, p *struct) Method: Method

Example:

router.AddRouteMethod("user:detail", "/users/:id", func(c *gin.Context, p *struct{
	ID int `uri:"id" binding:"required"`
}) {
    // code
	c.JSON(http.StatusOK, gin.H{
		"id": p.ID,
	})
}, Get)

func (*Router) AddRouteObject added in v0.6.1

func (r *Router) AddRouteObject(route *Route) *Router

func (*Router) AddRouteOptions added in v0.2.2

func (r *Router) AddRouteOptions(name string, pattern string, handler interface{}) error

func (*Router) AddRoutePatch added in v0.2.2

func (r *Router) AddRoutePatch(name string, pattern string, handler interface{}) error

AddRoutePatch add Path route to router. Name: Name id for url construct Pattern: path to route, example "/users/:id". Handler: func(c *gin.Context, p *struct)

Example:

router.AddRoutePatch("user:detail", "/users/:id", func(c *gin.Context, p *struct{
	ID int `uri:"id" binding:"required"`
}) {
    // code
	c.JSON(http.StatusOK, gin.H{
		"id": p.ID,
	})
})

func (*Router) AddRoutePost added in v0.2.0

func (r *Router) AddRoutePost(name string, pattern string, handler interface{}) error

AddRoutePost add POST route to router. Name: Name id for url construct Pattern: path to route, example "/users/:id". Handler: func(c *gin.Context, p *struct)

Example:

router.AddRoutePost("user:detail", "/users/:id", func(c *gin.Context, p *struct{
	ID int `uri:"id" binding:"required"`
}) {
    // code
	c.JSON(http.StatusOK, gin.H{
		"id": p.ID,
	})
})

func (*Router) AddRoutePut added in v0.2.2

func (r *Router) AddRoutePut(name string, pattern string, handler interface{}) error

AddRoutePut add Put route to router. Name: Name id for url construct Pattern: path to route, example "/users/:id". Handler: func(c *gin.Context, p *struct)

Example:

router.AddRoutePut("/users/:id", func(c *gin.Context, p *struct{
	ID int `uri:"id" binding:"required"`
}) {
    // code
	c.JSON(http.StatusOK, gin.H{
		"id": p.ID,
	})
})

func (*Router) AddRouteTrace added in v0.2.2

func (r *Router) AddRouteTrace(name string, pattern string, handler interface{}) error

func (*Router) EnableDebug added in v0.8.0

func (r *Router) EnableDebug() bool

func (*Router) EnableMode added in v1.0.0

func (r *Router) EnableMode(mode string) bool

func (*Router) EnablePrefetch added in v1.2.7

func (r *Router) EnablePrefetch() *Router

func (*Router) EnableRelease added in v0.8.0

func (r *Router) EnableRelease() bool

EnableRelease set Mode release for project and gin

func (*Router) EnableTest added in v0.8.0

func (r *Router) EnableTest() bool

func (*Router) ErrorHandlerMiddleware added in v0.4.0

func (r *Router) ErrorHandlerMiddleware() gin.HandlerFunc

ErrorHandlerMiddleware middleware for customization error stats responses

func (*Router) GenerateUrlByName added in v0.6.0

func (r *Router) GenerateUrlByName(name string, params map[string]interface{}) (string, error)

func (*Router) GenerateUrlByPattern added in v0.6.0

func (r *Router) GenerateUrlByPattern(pattern string, params map[string]interface{}) (string, error)

func (*Router) GetHtmlRenderer added in v1.2.10

func (r *Router) GetHtmlRenderer() render.HTMLRender

GetHtmlRenderer get html renderer

func (*Router) GetMode added in v0.8.0

func (r *Router) GetMode() string

GetMode return project Mode

func (*Router) GetNativeRouter added in v0.2.0

func (r *Router) GetNativeRouter() *gin.Engine

GetNativeRouter return gin router engine Docs continue in gin.Engine

func (*Router) GetRoutes added in v0.2.0

func (r *Router) GetRoutes() map[string]*Route

GetRoutes return list of Routes

func (*Router) IsDebug added in v0.8.0

func (r *Router) IsDebug() bool

func (*Router) IsMode added in v1.2.0

func (r *Router) IsMode(mode string) bool

func (*Router) IsRelease added in v0.8.0

func (r *Router) IsRelease() bool

func (*Router) IsTest added in v0.8.0

func (r *Router) IsTest() bool

func (*Router) Run added in v0.2.0

func (r *Router) Run(addr string) error

Run attaches the router to a http.Server and starts listening and serving HTTP requests. It is a shortcut for http.ListenAndServe(addr, router) Note: this Method will block the calling goroutine indefinitely unless an error happens.

func (*Router) SetDefaultErrorHandler added in v0.4.1

func (r *Router) SetDefaultErrorHandler(handler ErrorHandlerFunc) *Router

SetDefaultErrorHandler set default error Handler Example:

router.SetDefaultErrorHandler(func(c *gin.Context) {
	c.JSON(http.StatusNotFound, gin.H{
	"error": "Custom 404",
})

func (*Router) SetErrorHandler added in v0.4.0

func (r *Router) SetErrorHandler(status int, handler ErrorHandlerFunc) *Router

SetErrorHandler set Error Handler for status code Example:

router.SetErrorHandler(400, func(c *gin.Context) {
	status := c.Writer.Status()
	c.JSON(status, gin.H{
		"error":       "An error occurred",
		"description": "No specific Handler defined for this status",
	})
})

func (*Router) SetHtmlRenderer added in v1.2.6

func (r *Router) SetHtmlRenderer(renderer render.HTMLRender) *Router

SetHtmlRenderer set html renderer

func (*Router) SetMode added in v0.8.0

func (r *Router) SetMode(mode string) *Router

SetMode set Mode for project and gin

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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