router

package
v0.0.0-...-b173b6e Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2018 License: MIT Imports: 14 Imported by: 0

README

Componenta / Router

Простой роутер...

package main

import (
    "github.com/AlexanderGrom/componenta/router"
    "log"
    "net/http"
)

func main() {  
    r := router.New(nil)

    r.Get("/", func(ctx *router.Ctx) error {
        ctx.Res.Cookies.Set("test", "Home Page", 100500)
        ctx.Res.Text("Hello World")
        return nil
    })

    r.Get("/test", func(ctx *router.Ctx) error {
        test := ctx.Req.Cookies.Get("test")
        return ctx.Res.Text("Cookie Value: " + test)
    })

    r.Get("/test/:name", func(ctx *router.Ctx) error {
        return ctx.Res.Text(ctx.Req.Params.Get("name"))
    })

    r.Get("/name", func(ctx *router.Ctx) error {
        return ctx.Res.Redirect("/test/name", 301)
    })

    r.Use(func(ctx *router.Ctx, next router.Next) error {
        log.Println("Global Middleware")
        return next()
    })

    g := r.Group("/group")
    g.Use(func(ctx *router.Ctx, next router.Next) error {
        log.Println("Group Middleware")
        return next()
    })
    {
        g.Get("/path", func(ctx *router.Ctx) error {
            return ctx.Res.Text("Address: /group/path")
        }).Use(func(ctx *router.Ctx, next router.Next) error {
            log.Println("Route Middleware")
            return next()
        })
    }

    if err := http.ListenAndServe(":8080", r.Handler()); err != nil {
        log.Fatalln("ListenAndServe:", err)
    }
}

Documentation

Index

Constants

View Source
const (
	GET    = "GET"
	PUT    = "PUT"
	HEAD   = "HEAD"
	POST   = "POST"
	DELETE = "DELETE"
)

Variables

View Source
var (
	ErrRouteNotFound = errors.New("Route not found")
)
View Source
var (
	TOKEN = "wed5623015c29280c944e0dd937f8995"
)

Серкетный ключ для присоединения к значению куки хеша С целью проверки на изменение значения на клиенте TODO: сделать настройку...

Functions

This section is empty.

Types

type CookieReader

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

CookieReader принимает http.Request, и служит для чтения кук пришедших от клиента

func NewCookieReader

func NewCookieReader(r *http.Request) *CookieReader

func (*CookieReader) Exists

func (self *CookieReader) Exists(key string) bool

Проверка куки на существование

func (*CookieReader) Get

func (self *CookieReader) Get(key string) string

Получения значения куки, установленной через ctx.Res.Cookies.Set

func (*CookieReader) GetRaw

func (self *CookieReader) GetRaw(key string) *http.Cookie

Получение сырого значения куки, нужно если кука устанавливается на клиенте и не имеет приписаного хеша валидации

type CookieWriter

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

CookieWriter получает http.ResponseWriter и служит созданием кук для ответа

func NewCookieWriter

func NewCookieWriter(w http.ResponseWriter) *CookieWriter

func (*CookieWriter) Del

func (self *CookieWriter) Del(key string)

Удаление куки

func (*CookieWriter) Set

func (self *CookieWriter) Set(key, value string, age int)

Установка куки

func (*CookieWriter) SetRaw

func (self *CookieWriter) SetRaw(cookie *http.Cookie)

Установка сырой куки (без приписанного хеша)

type Ctx

type Ctx struct {
	Req *Request
	Res *Response
}

Контекст запроса Содержит расширенные Request и Response

func NewCtx

func NewCtx(w http.ResponseWriter, r *http.Request) *Ctx

type Grouper

type Grouper struct {
	*Interceptor
	Routes Routes
	// contains filtered or unexported fields
}

func NewGrouper

func NewGrouper(prefix string) *Grouper

func (*Grouper) Delete

func (self *Grouper) Delete(pattern string, fn Handler) *Route

func (*Grouper) Get

func (self *Grouper) Get(pattern string, fn Handler) *Route

func (*Grouper) Head

func (self *Grouper) Head(pattern string, fn Handler) *Route

func (*Grouper) Post

func (self *Grouper) Post(pattern string, fn Handler) *Route

func (*Grouper) Put

func (self *Grouper) Put(pattern string, fn Handler) *Route

type Handler

type Handler func(*Ctx) error

func WrapHandler

func WrapHandler(h http.Handler) Handler

type Interceptor

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

func NewInterceptor

func NewInterceptor() *Interceptor

func (*Interceptor) Use

func (self *Interceptor) Use(fns ...Middleware) *Interceptor

Добавляет middleware

type Logger

type Logger interface {
	Print(...interface{})
	Printf(string, ...interface{})
	Println(...interface{})
}

func NewLogger

func NewLogger(out io.Writer) Logger

type Middleware

type Middleware func(*Ctx, Next) error

type Multiplexer

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

func NewMultiplexer

func NewMultiplexer(w io.Writer) *Multiplexer

func (*Multiplexer) ServeHTTP

func (self *Multiplexer) ServeHTTP(w http.ResponseWriter, r *http.Request)

type Next

type Next func() error

type Request

type Request struct {
	*http.Request
	Cookies *CookieReader
	Params  URLParams
}

Обертка над http.Request

func NewRequest

func NewRequest(r *http.Request) *Request

func (*Request) WithContext

func (self *Request) WithContext(c context.Context) *Request

type Response

type Response struct {
	Writer  http.ResponseWriter
	Request *http.Request
	Cookies *CookieWriter
}

Обертка над http.ResponseWriter

func NewResponse

func NewResponse(w http.ResponseWriter, r *http.Request) *Response

func (*Response) Header

func (self *Response) Header() http.Header

func (*Response) Json

func (self *Response) Json(obj interface{}) error

func (*Response) Raw

func (self *Response) Raw(data []byte) error

func (*Response) Redirect

func (self *Response) Redirect(url string, code int) error

func (*Response) Status

func (self *Response) Status(code int) error

func (*Response) Text

func (self *Response) Text(text string) error

func (*Response) Xml

func (self *Response) Xml(obj interface{}) error

type Route

type Route struct {
	*Interceptor
	Method  string
	Pattern string
	Handler Handler
	FnChain func(ctx *Ctx) error
	RegExp  *regexp.Regexp
}

func NewRoute

func NewRoute(method string, pattern string, handler Handler) *Route

type Router

type Router struct {
	*Interceptor
	*Grouper
	Mux *Multiplexer
	// contains filtered or unexported fields
}

func New

func New(w io.Writer) *Router

func (*Router) Group

func (self *Router) Group(prefix string) *Grouper

func (*Router) Handler

func (self *Router) Handler() http.Handler

type Routes

type Routes map[string][]*Route

func NewRoutes

func NewRoutes() Routes

type URLParams

type URLParams map[string]string

Хранилице для параметров URL

func NewURLParams

func NewURLParams() URLParams

func (URLParams) Exists

func (self URLParams) Exists(key string) bool

func (URLParams) Get

func (self URLParams) Get(key string) string

Jump to

Keyboard shortcuts

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