用 go 结构体标签定义 handler 路由信息的辅助库 go-mir

Apache
Google Go
跨平台
2019-01-31
北•野

go-mir 是一个使用 golang 结构体标签信息将方法注册为 http engine handler 的辅助库,目前支持将方法注册到 GinEchoIrisMacaronMuxhttprouter

主要功能:

  • 使用 go 结构体标签定义 handler 的路由信息用于注册

  • 通过反射机制根据结构体标签信息获取结构体方法,并依据结构体标签信息注册到相应的 http engine 中,比如 GinEchoIrisMacaronMuxhttprouter

  • 使用结构体方法编写 http handler

  • 使用结构体标签定义 Middleware 信息,并注册到 http engine 中

代码示例:(eg: gin backend)

  • Get Mir.Gin module first

go get github.com/alimy/mir/module/gin@master
  • Then happy in codding enjoy your heart...

package main

import(
    "github.com/alimy/mir"
    "github.com/gin-gonic/gin"
    "net/http"
    
    mirE "github.com/alimy/mir/module/gin"
)

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

// 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 *gin.Context) {
    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/#GetArticles)
// 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 *gin.Context) {
    c.String(http.StatusOK, "get articles data")
}

func main() {
    //Create a new gin engine
    engine := gin.New()
    
    // Register handler to engine by mir
    mirE.Register(engine, &site{Chain: gin.HandlersChain{gin.Logger()}})
    
    // Start gin engine serve
    engine.Run()
}
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

NVIDIA 宣布 Wayland/Mir 及 KMS 支持策略

  在 XDCAMD 宣布主打开源的统一化驱动策略的第二天,NVIDIA 亦在 XDC 上宣布了其闭源驱动接下来的发展方向,包括 Wayland/Mir 支持。   不出意外的,NVIDIA 方面依然是主导闭源驱动,其...

2014/10/31 10:47
64
0
Basic Block

WIKI里面对BB的解释: http://en.wikipedia.org/wiki/Basic_block GCC文档对BB的解释: http://gcc.gnu.org/onlinedocs/gccint/Basic-Blocks.html 看着还是GCC的容易理解一点: A basic bloc...

2013/11/14 13:58
54
0
X11 、Wayland、Mir

Mir Canonical 2013年3月宣布开发自己的显示服务器 Mir之后,引发了开源界的大量谴责,很多人指责Canonical为什么不采用被设计用来取代X11的Wayland,Wayland的开发者也表示Wayland完全能够满...

2013/06/23 00:20
1K
0
Dalvik :compiler 从bytecode到MIR

开始之前先简单介绍几个和compiler相关的数据对象: //libdex/DexFile.h /* * Direct-mapped "code_item". * * The "catches" table is used when throwing an exception, * "deb...

2013/08/26 14:41
412
0
script.aculo.us 1.8 preview放出来了

script.aculo.us网站上贴出了script.aculo.us 1.8 preview 更新有: 使用Prototype 1.6 完全重写了Ajax.InPlaceEditor 和 Ajax.InPlaceCollectionEditor 等等 更多更新请看:http://mir.acul...

2016/06/20 19:13
3
0
Dalvik :dvmCompilerMIR2LIR

这个函数的主要工作是: 1)将MIR转化为LIR 注意,LIR还不是机器码(MC:machine code),机器码也不完全等于汇编,因为汇编里面还包含了汇编伪指令。 2)优化 例如用java写的循环,如果是很...

2013/09/02 15:08
71
0
CompilationUnit

dalvik还是要显得与众不同。 在一个从Java源码编译到JVM字节码的编译器(如javac、ECJ)里,一个“编译单元”(CompilationUnit)指的是一个Java源文件。而在Dalvik VM的JIT里也有一个结构体...

2013/11/14 18:03
232
0
Rust语言在2017年的发力点

Rust核心团队已经确定了[Rust的路线图](https://github.com/aturon/rfcs/blob/roadmap-2017/text/0000-roadmap-2017.md)提案,旨在确定语言在一年内的位置。部分基于2016年Rust用户进行的[调...

2016/10/31 07:16
49
0
Unity 8 和 KDE 可以在 Ubuntu 桌面版本中共存

Ubuntu 开发人员和 KDE 开发者一起让 Unity 8 和 KDE 实现共存,允许用户在同一系统中拥有两种桌面环境。 目前 Unity 8 仍在大规模开发,到目前为止该环境可在 Ubuntu 手机上使用,对 Ubuntu...

2015/08/06 16:19
13
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部