package
0.0.0-20180225195639-b173b6ed556d
Repository: https://github.com/alexandergrom/componenta.git
Documentation: pkg.go.dev

# 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)
    }
}