![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Web 框架
harleylau
这个作者很懒,什么都没留下…
展开
-
跟Gin一块搭建自己的web框架(一)
Golang提供了非常完善的net/http标准库,基于这个标准库能够很容易的就构建一个能用的web框架。现在的开源社区上有很多的go web框架,提供了丰富的选择性,从大而全的beego,到轻便的gin、echo等等。其中的gin具有和maritini类似的API,但它拥有了更好的性能,因为它采用了httprouter,使得性能提升了将近40倍。同时,在代码风格上也比较清晰简洁。我们通过分...原创 2019-01-17 18:20:25 · 3287 阅读 · 0 评论 -
跟Gin一块搭建自己的web框架(二)
本文介绍Gin的路由控制。上一篇文章中直接用Golang自带的net/http实现了一个Web服务,并且具备了路由功能。但是,net/http在功能和性能上都有所欠缺。 比如从功能上来说, 现在的很多RESTful接口的定义方式中,习惯使用不同的请求方法来实现不同的语义:GET、POST、HEAD、DELETE、OPTION等等。 如何用net/http单独的对请求方法注册特定的处理函数也变成...原创 2019-01-29 10:13:04 · 815 阅读 · 0 评论 -
跟Gin一块搭建自己的web框架(三)
在上一篇的基础之上继续实现前缀路由的功能。首先说明一下这边说的前缀路由的概念。在上一篇的Web服务的基础上,我们对于路由可以有两种处理方式:一种是所有的路由都挂载到根路径 ‘/’ 上边,举例说明,如果有一个登录和登出功能,我们可以这么来写router.GET("/user/login", loginHandler)router.GET("/user/logout", logoutH...原创 2019-02-11 14:56:03 · 616 阅读 · 0 评论 -
跟Gin一块搭建自己的web框架(四)
这一篇介绍Web框架中的中间件技术。先来设想一个简单的场景,在处理每一个url的时候需要打印一条日志,说明收到了来自外界的请求。 考虑上一篇的情况,需要在两个handler里边都加上一个print的代码。对于少数的几个url的处理情况还可以介绍,但是一旦url非常多的时候,这个就变成了一个非常繁重并且容易出错的工作。如果了解python,可能很容易的就想到在python中的处理方式:装饰器。...原创 2019-02-11 16:53:55 · 384 阅读 · 1 评论 -
跟Gin一块搭建自己的web框架(六)
这一篇介绍gin中的绑定和数据验证。不管是在query中,还是在body中,如果要一个一个的去获取参数并放入对应的变量中,是一个比较繁琐的过程,gin里边提供了一个自动绑定的方法,能够将query或者body中的参数方便的放入到我们定义的struct中。同时在绑定参数的时候,我们也能够指定参数的范围或者特性,对参数进行验证。所以将绑定和参数验证放在一块讲,接下去实现一个比较简单的绑定功能...原创 2019-03-25 11:39:30 · 444 阅读 · 0 评论 -
跟Gin一块搭建自己的web框架(七)
本篇介绍HTTP Basic Auth的实现以及Recovery机制。HTTP Basic AuthBasic Auth是一种开放平台认证方式,简单的说就是需要你输入用户名和密码才能继续访问。对于Basic Auth的概念不过多的进行介绍,直接进入如何实现的过程。Basic Auth说白了就是账号和密码的组合,所以定义用来存储账号和密码的结构体。type ( // BasicAuthP...原创 2019-03-25 16:13:55 · 664 阅读 · 0 评论 -
跟Gin一块搭建自己的web框架(五)
继续扩展web框架的功能。context作为某个请求的上下文,必然就需要承担它最基本的功能:在各个中间件和函数之间传递变量。所以我们在context的结构体定义中加入一个Keys的字段,用来放置上下文的变量。// Context . Context struct { Req *http.Request Writer http.ResponseWriter Keys...原创 2019-03-22 16:20:09 · 323 阅读 · 0 评论