跟Gin一块搭建自己的web框架(一)

Golang提供了非常完善的net/http标准库,基于这个标准库能够很容易的就构建一个能用的web框架。现在的开源社区上有很多的go web框架,提供了丰富的选择性,从大而全的beego,到轻便的gin、echo等等。

其中的gin具有和maritini类似的API,但它拥有了更好的性能,因为它采用了httprouter,使得性能提升了将近40倍。

同时,在代码风格上也比较清晰简洁。我们通过分析gin的源码,一步一步构建我们自己的web框架。当然,整个过程也可以看成gin源码的分析过程。

Golang原生net/http包

通过Golang原生net/http包就能构建一个最简单的web服务器,参照官方文档的例子:

package main

import (
    "fmt"
    "log"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

运行以上的代码,访问 http://localhost:8080/ 就已经构建了最简单的web服务器。

那么可能会有疑问,既然这么快速的实现了一个web服务器,为什么还需要web框架呢。答案当然是功能太简单了。在web服务中需要的很多功能,其实并不需要我们重新实现一遍,而是有很多封装可以直接拿来使用,框架就帮我们隐去了很多细节,节省了大量时间。

简单的来说,Gin主要帮我们做了几大块事情。

  1. 一个路由匹配
  2. 一个请求和响应的context封装
  3. 一个中间件的使用,包括鉴权、日志、故障恢复等

我们也主要分析这几方面。下一篇先分析路由匹配。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值