当前位置: 首页 > news >正文

怎么用云服务器做网站做棋牌网站一般多少钱

怎么用云服务器做网站,做棋牌网站一般多少钱,百度的网站哪来的,seo的描述正确go web框架 gin-gonic源码解读01————Engine gin-gonic是go语言开发的轻量级web框架#xff0c;性能优异#xff0c;代码简洁#xff0c;功能强大。有很多值得学习的地方,最近准备把这段时间学习gin的知识点#xff0c;通过engine#xff0c;context#xff0c;router…go web框架 gin-gonic源码解读01————Engine gin-gonic是go语言开发的轻量级web框架性能优异代码简洁功能强大。有很多值得学习的地方,最近准备把这段时间学习gin的知识点通过enginecontextroutermiddleware几篇博客文章总结总结。 而Engine是gin框架最核心的结构体。 // Engine is the frameworks instance, it contains the muxer, middleware and configuration settings. // Create an instance of Engine, by using New() or Default() type Engine struct { // ... 略 }为什么gin需要设计一个Engine结构体 因为gin框架依赖于go本身的 net/http 包来提供http服务。 net/http 包的http服务可以用以下方式快速的启动 type mHandle struct { }func (i mHandle ) ServeHTTP(w http.ResponseWriter, req *http.Request) {w.Write([]byte(Hello)) }func HttpRun() {// mHandle{} 实现了 net/http中的Handler接口http.Handle(/, mHandle{})http.ListenAndServe(:9999, nil) } // net/http中的Handler接口 // type Handler interface { // ServeHTTP(ResponseWriter, *Request) // }而我们gin框架的Engine也实现了一个net/http包的Handler接口。当是gin既然是依赖老的net/http为什么大家不直接使用net/http而是需要使用gin呢那是因为net/http在大多数情况下只支持静态路由而且不能很好的支持动态路由对中间件的开发也不友好也不能很好的支持http模版的返回所以大多数时候我们更倾向于使用集成了这些功能的gin,并且gin的代码量很少简直是小而美。 type Engine struct {// ... 略// 对象池这里用于存放gin.Context对象减少内存分配降低 GC 压力。pool sync.Pool// 路由树trees methodTrees }// ServeHTTP conforms to the http.Handler interface. func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request) {// Context是gin框架为了更方便的处理http的请求与响应(即w http.ResponseWriter, req *http.Request)// 而对进行的封装每次接受到http请求都需要封装一下Context结构体交由下一步代码执行Context在后续的博客中会有详细的介绍c : engine.pool.Get().(*Context)c.writermem.reset(w)c.Request reqc.reset()// 将请求交于逻辑函数执行engine.handleHTTPRequest(c)// 执行完了进行归还engine.pool.Put(c) }// 逻辑函数这里来解析请求的url然后路由匹配该路径需要执行的方法 func (engine *Engine) handleHTTPRequest(c *Context) {// 获取请求方法GETPOST..httpMethod : c.Request.Method// 获取urlrPath : c.Request.URL.Pathunescape : false// 如果地址存在原始地址则使用原始地址if engine.UseRawPath len(c.Request.URL.RawPath) 0 {rPath c.Request.URL.RawPathunescape engine.UnescapePathValues}if engine.RemoveExtraSlash {// cleaenpPath 函数作用类似于filepath.Clean()是为了获取最短有效urlrPath cleanPath(rPath)}// Find root of the tree for the given HTTP method// engine.trees中存放是gin框架的路由树它采用前缀树结构来搞笑的存储各类路由 // 后续的博客会对路由树有更为详细的介绍这里就简单介绍一下。t : engine.treesfor i, tl : 0, len(t); i tl; i {// 路由树的第一层孩子节点都是请求方法如GETPOST。。。if t[i].method ! httpMethod {continue}root : t[i].root// Find route in tree// 查找请求的url是否有对应的url路由配置value : root.getValue(rPath, c.params, c.skippedNodes, unescape)if value.params ! nil {c.Params *value.params}// value.handlers存储的就是该路由的逻辑处理方法if value.handlers ! nil {c.handlers value.handlersc.fullPath value.fullPath// c.Next是gin框架调用handlers与各类中间件的一种便捷的方式后续讲中间件的时候会重点介绍。c.Next()// 处理完了写入响应的头文件c.writermem.WriteHeaderNow()return}// 执行到这里了说明value.handlers nil这里判断是不是重定向请求然后进行重定向处理if httpMethod ! http.MethodConnect rPath ! / {if value.tsr engine.RedirectTrailingSlash {redirectTrailingSlash(c)return}// 实在找不到就尝试修复你的url看看能不能找到合适的路由来处理if engine.RedirectFixedPath redirectFixedPath(c, root, engine.RedirectFixedPath) {return}}break}// HandleMethodNotAllowed 这个配置如果开启并且没有找到合适的路由来处理该请求就会尝试别的method 会不会有可以解析该请求的路由if engine.HandleMethodNotAllowed {for _, tree : range engine.trees {// 相同method的上面已经找过了这里continueif tree.method httpMethod {continue}// 到别的请求方法下面嚯嚯if value : tree.root.getValue(rPath, nil, c.skippedNodes, unescape); value.handlers ! nil {c.handlers engine.allNoMethodserveError(c, http.StatusMethodNotAllowed, default405Body)return}}}// 啥招都没有了调用统一的失败处理函数响应该请求c.handlers engine.allNoRouteserveError(c, http.StatusNotFound, default404Body) }
http://www.zqtcl.cn/news/212400/

相关文章:

  • 网站结构有哪些建设局平台
  • 高端网站建设公司服务好吗有哪些制作网站的公司
  • 网站整站模板下载工具淮安网站建设案例
  • 网站前台用什么做广东省网站设计师
  • 汕头网站建设公司哪个好百度公司注册地址
  • 创建网站需要什么平台wordpress 卡盟模板
  • 网站开发常用的流程肃宁网站建设公司
  • 站内关键词自然排名优化绍兴网络公司
  • 益阳网站seo免费建造公司网站
  • 网站推广报价教你免费申请个人平台
  • 企网站建设wordpress文章批量上传
  • 福州seo建站网站的icp备案信息是什么
  • 腾讯分分彩做号网站广州顶正餐饮培训学校
  • 低价网站建设制作设计公司网站怎样做地理位置定位
  • 贵州网站seo织梦网站后台默认登陆路径
  • 杭州网站设计哪家公司好百度搜索网站显示图片
  • 新乡专业做淘宝网站房地产平面设计网站
  • 三亚谁做网站做网站导航的
  • 厦门酒店网站建设建设网站文案
  • 17网站一起做网店质量怎么样合肥网站建设维护
  • 建站公司外包怎么搭建手机网站m
  • 用ps做网站设计济南品牌网站制作便宜
  • 个人可做网站需要什么材料可以做3d电影网站
  • 温州网站建设专家网站推广软件推广
  • 24淘宝网站建设编程做网站
  • 公司网站模板怎么做自适应网站设计尺寸
  • 滨州正规网站建设价格简单网站制作
  • 创建网站平台电商系统源码
  • 滕州本地网站建设网站维护中模版
  • 商城类网站设计制作开发公司 张庆