博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go-mir v1.0.0 发布 用 Go 结构体标签定义 handler 路由信息的辅助库
阅读量:5897 次
发布时间:2019-06-19

本文共 2026 字,大约阅读时间需要 6 分钟。

  hot3.png

go-mir v1.0.0 发布了,推荐使用。

新增特性

  • mir: 添加对handler的直接赋值

  • mir: 支持对单独field条目添加chain function信息,支持对单一路由handler插入middleware信息,目前基于go-chi的module/chi子模块支持该功能

  • module/chi: 添加对 路由框架的支持

使用go-mir构建web服务的样例代码

  •  这是一个使用 +  构建的简单web服务样例代码,是spring-music的go实现

  • 这是使用  +  构建的简单web服务样例代码, 来源于spring-music的go实现

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

主要功能:

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

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

  • 使用结构体方法编写 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 mainimport(    "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()}

转载地址:http://foasx.baihongyu.com/

你可能感兴趣的文章
public/private/protected的具体区别
查看>>
面试宝典——求一个字符串中连续出现次数最多的子串
查看>>
VMware Workstation虚拟机上网设置
查看>>
Jenkins持续集成学习-搭建jenkins问题汇总
查看>>
C#Note13:如何在C#中调用python
查看>>
Android介绍以及源码编译---Android源码下载
查看>>
SpringBoot集成redis缓存
查看>>
sql经典语句
查看>>
使用ffmpeg实现对h264视频解码 -- (实现了一个易于使用的c++封装库)
查看>>
第4周作业-面向对象设计与继承
查看>>
mb_strcut与mb_substr()
查看>>
机器学习的原理
查看>>
网页制作中最有用的免费Ajax和JavaScript代码库
查看>>
flink watermark介绍
查看>>
[Flink原理介绍第四篇】:Flink的Checkpoint和Savepoint介绍
查看>>
mybatis学习之一 开发环境配置和接口编程
查看>>
SqlDataAdapter DataSet DataTable 详解
查看>>
Android Xutils 框架
查看>>
Puppet resource命令参数介绍(七)
查看>>
C#基础知识整理 基础知识(21) 委托(二)
查看>>