美文网首页读书笔记GO
《go web 编程》第三章 web基础:Go 代码的执行流程

《go web 编程》第三章 web基础:Go 代码的执行流程

作者: bycall | 来源:发表于2022-08-24 19:31 被阅读0次

通过对 http 包的分析之后,现在让我们来梳理一下整个的代码执行过程。

首先调用 Http.HandleFunc

按顺序做了几件事:

1 调用了 DefaultServeMux 的 HandleFunc

2 调用了 DefaultServeMux 的 Handle

3 往 DefaultServeMux 的 map [string] muxEntry 中增加对应的 handler 和路由规则

其次调用 http.ListenAndServe (":9090", nil)

按顺序做了几件事情:

1 实例化 Server

2 调用 Server 的 ListenAndServe ()

3 调用 net.Listen ("tcp", addr) 监听端口

4 启动一个 for 循环,在循环体中 Accept 请求

5 对每个请求实例化一个 Conn,并且开启一个 goroutine 为这个请求进行服务 go c.serve ()

6 读取每个请求的内容 w, err := c.readRequest ()

7 判断 handler 是否为空,如果没有设置 handler(这个例子就没有设置 handler),handler 就设置为 DefaultServeMux

8 调用 handler 的 ServeHttp

9 在这个例子中,下面就进入到 DefaultServeMux.ServeHttp

10 根据 request 选择 handler,并且进入到这个 handler 的 ServeHTTP

mux.handler(r).ServeHTTP(w, r)

11 选择 handler:

A 判断是否有路由能满足这个 request(循环遍历 ServeMux 的 muxEntry)

B 如果有路由满足,调用这个路由 handler 的 ServeHTTP

C 如果没有路由满足,调用 NotFoundHandler 的 ServeHTTP

相关文章

  • 《go web 编程》第三章 web基础:Go 代码的执行流程

    通过对 http 包的分析之后,现在让我们来梳理一下整个的代码执行过程。 首先调用 Http.HandleFunc...

  • goweb协程

    参考Go如何使得web工作go:net/http ListenAndServe执行流程如下图,Go为了实现高并发和...

  • Golang资料整理

    视频 郝林-Go语言第一课 Go编程基础 Go Web 基础 Go名库讲解 社区 官网要翻墙 Github--Go...

  • go web开发学习之路

    基础:go 原生web开发1、go web的工作原理2、搭建一个简单的go web站点3、go web中载入静态文...

  • Go Web编程.epub

    【下载地址】 《Go Web编程》介绍如何用Go语言进行Web应用的开发,将Go语言的特性与Web开发实战组合到一...

  • Go Web编程一: Go Web 基础

    原文链接 http://ironxu.com/779 Go Web 基础概念与代码阅读 1. Go 搭建简单的we...

  • Go web编程

    Go web编程 专栏简介 分享 Go web 编程。在这里你可以了解到什么是 Go,为什么越来越多人喜欢它。在实...

  • go web的执行流程

    Request:用户请求的信息,用来解析用户的请求信息,包括post,get,Cookie,url等信息Respo...

  • go web编程基础

    通过了一段时间对go的接触,是时候展现真的技术了----嘻嘻嘻。大家都知道go语言因为它的轻量级,快速编译的特性用...

  • golang命令学习笔记

    主要来源:《Go Web编程》 1、go build 作用:compile packages and depend...

网友评论

    本文标题:《go web 编程》第三章 web基础:Go 代码的执行流程

    本文链接:https://www.haomeiwen.com/subject/llpogrtx.html