echo

package module
v0.0.0-...-f149836 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2019 License: Apache-2.0 Imports: 3 Imported by: 0

README

Mir.Echo

Mir.Echo module provide mir.Engine implement backend by Echo.

Usage
package main

import(
	"github.com/dyc92/mir"
	"github.com/labstack/echo"
	"github.com/labstack/echo/middleware"
	"net/http"

	
	mirE "github.com/dyc92/mir/module/echo"
)

type site struct {
	Group mir.Group     `mir:"v1"`
	index mir.Get       `mir:"/index/"`
	articles mir.Get    `mir:"/articles/:category/#GetArticles"`
}

type blog struct {
	Chain mir.Chain     `mir:"-"`
	Group mir.Group     `mir:"v1"`
	articles mir.Get    `mir:"/articles/:category"`
}

// Index handler of the index field that in site struct, the struct tag indicate
// this handler will register to path "/index/" and method is http.MethodGet.
func (h *site) Index(c echo.Context) error {
	return c.String(http.StatusOK, "get index data")
}

// GetArticles handler of articles indicator that contains Host/Path/Queries/Handler info.
// Path info is the second or first(if no host info) segment start with '/'(eg: /articles/:category)
// Handler info is forth info start with '#' that indicate real handler method name(eg: GetArticles).if no handler info will
// use field name capital first char as default handler name(eg: if articles had no #GetArticles then the handler name will
// is Articles) 
func (h *site) GetArticles(c echo.Context) error {
	return c.String(http.StatusOK, "get articles data")
}

// Articles handler of articles indicator that contains Host/Path/Queries/Handler info.
func (b *blog) Articles(c echo.Context) error {
	return c.String(http.StatusOK, "get articles data")
}

func main() {
	// Create a new echo engine instance
	e := echo.New()             
	
	// Register handler to engine by mir
	entries := mirEntries()
	mirE.Register(e, entries...)
	
	// Start echo engine serve
	e.Start(":8013")
}

// get all entries to register
func mirEntries()[]interface{} {
	return []interface{} {
		&site{},
		&blog{
			Group: "v2", // direct custom group to v2 override default v1 in mir tag defined
			Chain: []echo.MiddlewareFunc {
				middleware.Logger(),
	            middleware.Recover(),
			}},
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Mir

func Mir(e *echo.Echo) mir.Engine

Mir return mir.Engine interface implements instance.Used to register routes to echo engine with struct tag string's information.

func Register

func Register(e *echo.Echo, entries ...interface{}) error

Register use entries's info to register handler to echo engine.

Types

This section is empty.

Jump to

Keyboard shortcuts

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