Go实现Web框架
文章平均质量分 90
Go实现Web框架Gee教程
确实可以
这个作者很懒,什么都没留下…
展开
-
Gee教程2.上下文Context
先来看看Gin框架的简单例子对比我们自己写的,Hander方法的参数变成了*gin.Context。原创 2023-11-26 19:04:10 · 896 阅读 · 0 评论 -
7天用Go实现Web框架Gee教程
设计框架之前,需要知道为什么需要使用框架,框架能解决什么问题。只有明白了这一点,才能设计出框架中的功能。通俗来讲,使用框架,是因为框架实现了更多功能,让用户写的代码更加简便等等好处。先来看看go语言的web服务。net/http简单的处理请求示例如下原创 2023-11-26 18:57:19 · 825 阅读 · 0 评论 -
Gee教程7.错误恢复(Panic Recover)
自定义 recovery 中间件是一种常见的做法,用于捕获并处理应用程序的运行时错误,以避免整个应用程序崩溃并返回对应格式的响应数据。我认为主要是可以返回对应格式的响应数据。按照下面的测试例子,不使用自写的recovery中间件的话,在浏览器访问会显示 无法显示此网页。而使用recovery中间件,那可以显示{"message":"Internal Server Error"},即是返回我们给定的格式的响应数据。测试:思考:在其他协程中发生了panic,会被recover捕捉到吗?原创 2023-12-06 20:12:59 · 866 阅读 · 0 评论 -
Gee教程1.HTTP基础
至此,我们走出了实现web框架的第一步,即是将所有的HTTP请求都转向了我们自己的处理逻辑。即是说,只要传入任何实现了 ServerHTTP 接口的实例,所有的HTTP请求,就都交给了该实例处理了。,这样针对相同的路由,如果请求方法不同,可以映射不同的处理方法(Handler),value 是用户映射的处理方法(用户自己写的)。框架的原型已经出来了。我们实现了路由映射表,提供了用户注册静态路由的方法,也包装了启动服务的函数。方法的作用就是,解析请求的路径,查找路由映射表,如果查到,就执行注册的处理方法。原创 2023-11-26 18:58:41 · 1016 阅读 · 0 评论 -
Gee教程4.实现路由分组控制
还有按照前面的分析,中间件是应用在分组上的,那路由组就还需要存储应用在该分组上的中间件。而前面说过了,Enginx也是个路由组(最顶层的路由分组),该group.prefix="",其前缀就是空字符串,string类型默认就是"",所以父类的prefix可以不用赋值。因此,我们今天实现的分组控制也是以前缀来区分,并且支持分组的嵌套。的分组应用鉴权中间件,即是只有访问的前缀是/admin的请求才应用鉴权,而其他的请求都不使用。是默认的最顶层的分组,也就意味着给所有的路由,即整个框架增加了记录日志的能力。原创 2023-11-30 08:46:50 · 948 阅读 · 0 评论 -
Gee教程3.实现前缀树路由
之前,我们用了一个非常简单的map结构存储了路由表,使用map存储键值对,索引非常高效,但是有一个弊端,键值对的存储的方式,只能用来索引静态路由。如果我们想支持类似于这样的动态路由怎么办呢?所谓动态路由,即一条路由规则可以匹配某一类型而非某一条固定的路由。例如,可以匹配/hello/abchello/jack等。实现动态路由最常用的数据结构,被称为前缀树(Trie树)。看到名字你大概也能知道前缀树长啥样了:每一个节点的所有的子节点都拥有相同的前缀。这种结构非常适用于路由匹配。原创 2023-11-28 22:20:00 · 1011 阅读 · 0 评论 -
Gee教程6.模板(HTML Template)
这一章节的内容是介绍 Web 框架如何支持的场景这一章节很多内容是基于net/http库的,该库已经实现了很多静态文件和HMML模板的相关功能的了。原创 2023-12-05 20:41:01 · 1109 阅读 · 0 评论 -
Gee教程5.中间件
鉴权认证、日志记录等这些保障和支持系统业务属于全系统的业务,和具体的系统业务没有关联,对于系统中的很多业务都适用。因此,在业务开发过程中,为了更好的梳理系统架构,可以将上述描述所涉及的一些通用业务单独抽离并进行开发,然后以进行对接。这种方式既保证了系统功能的完整,同时又有效的将具体业务和系统功能进行解耦,并且,还可以达到灵活配置的目的。这种通用业务独立开发并灵活配置使用的组件,一般称之为"中间件",因为其位于服务器和实际业务处理程序之间。原创 2023-12-01 09:49:23 · 953 阅读 · 0 评论