前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >组件分享之后端组件——一个 Go 多路复用器和中间件包web

组件分享之后端组件——一个 Go 多路复用器和中间件包web

作者头像
cn華少
发布2022-06-19 13:29:30
2520
发布2022-06-19 13:29:30
举报
文章被收录于专栏:IT综合技术分享IT综合技术分享

组件分享之后端组件——一个 Go 多路复用器和中间件包web

背景

近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。

组件基本信息

内容

本节分享一个 Go 多路复用器和中间件包web。其具有以下特点:

  • 超级快速和可扩展。每个请求增加的延迟为 3-9μs。路由性能在路由数量上是 O(log(N))。
  • 你自己的上下文。使用强静态类型在中间件和处理程序之间轻松传递信息。
  • 简单而强大的路由。捕获路径变量。使用正则表达式验证路径段。可爱的 API。
  • 中间件。中间件几乎可以表达任何 Web 层功能。我们让它变得容易。
  • 嵌套路由器、上下文和中间件。您的应用程序有一个 API、管理区域和一个已注销的视图。每个视图都需要不同的上下文和不同的中间件。我们让您自然地表达这种层次结构。
  • 拥抱 Go 的 net/http 包。使用 http.ListenAndServe() 启动服务器,并直接使用 http.ResponseWriter 和 http.Request。
  • 最小。gocraft/web 的核心是轻量级和最小化。使用我们的内置中间件添加可选功能,或编写您自己的中间件。

其具体使用方式如下:

1、拉取库

代码语言:javascript
复制
go get github.com/gocraft/web

2、添加一个文件server.go- 例如,src/myapp/server.go

代码语言:javascript
复制
package main

import (
    "github.com/gocraft/web"
    "fmt"
    "net/http"
    "strings"
)

type Context struct {
    HelloCount int
}

func (c *Context) SetHelloCount(rw web.ResponseWriter, req *web.Request, next web.NextMiddlewareFunc) {
    c.HelloCount = 3
    next(rw, req)
}

func (c *Context) SayHello(rw web.ResponseWriter, req *web.Request) {
    fmt.Fprint(rw, strings.Repeat("Hello ", c.HelloCount), "World!")
}

func main() {
    router := web.New(Context{}).                   // Create your router
        Middleware(web.LoggerMiddleware).           // Use some included middleware
        Middleware(web.ShowErrorsMiddleware).       // ...
        Middleware((*Context).SetHelloCount).       // Your own middleware!
        Get("/", (*Context).SayHello)               // Add a route
    http.ListenAndServe("localhost:3000", router)   // Start the server!
}

3、运行服务

代码语言:javascript
复制
go run src/myapp/server.go

更多使用方式,可以参考官方提供的README

本文声明:

知识共享许可协议

本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 组件分享之后端组件——一个 Go 多路复用器和中间件包web
    • 背景
      • 组件基本信息
        • 内容
          • 其具体使用方式如下:
      相关产品与服务
      消息队列 TDMQ
      消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档