美文网首页
跟我一起学习GO语言011——Go语言搭建一个Web服务器

跟我一起学习GO语言011——Go语言搭建一个Web服务器

作者: 搬砖人1314 | 来源:发表于2019-08-28 17:51 被阅读0次

         上一节我们介绍了搭建一个Web服务器需要了解的基础知识,本节我们来看看怎么用Go语言搭建一个Web服务器,Go语言中提供了一个完善的net/http包,通过http包可以很方便地搭建一个可以运行的Web服务。

    我们还是以代码方式展示:

    package main

    import(
           “fmt”
           “net/http”
           “strings”
           “log”
    )

    func sayhelloName(w http.ResponseWriter,r *http.Request){

         r.ParseForm()//解析参数,默认时不会解析的
         fmt.Println(r.Form)//这些信息时输出到服务器端打印信息
         fmt.Println(“path”,r.URL.Path)
         fmt.Println(“scheme”,r.URL.Scheme)
         fmt.Println(r.Form[“url_long”])
         for k,v:=range r.Form{
           fmt.Println(“key:”,k)
           fmt.Println(“val:”,string.Join(v,””))

         }

       fmt.Fprintf(w,”Hello astaxie!”)//这个写入到w的时输出到客户端的
    }

    func main(){

         http.HandleFunc(“/”,sayhelloName)//设置访问的路由
         err:=http.ListenAndServer(“:9090”,nil)//设置监听的端口
         if err!=nil{
               log.Fatal(“ListtenAndServer:”,err)
         }
    }

            我们build之后,然后执行web.exe,这个时候其实已经在9090端口监听tcp链接请求了。在浏览器输入http://localhost:9090,浏览器页面输出:Hello astaxie!.通过上面代码展示及输出,我们可以知道,要编写一个Web服务器很简单,只要调用http包的两个函数就可以了。

    下面我们来Go语言如何使Web工作的呢?

    Web工作方式的几个概念:

    Request:用户请求的信息,用来解析用户的请求信息,包括post、get、Cookie、url。
    Response:服务器需要反馈给客户端的信息。
    Conn:用户的每次请求链接。
    Handler:处理请求和生成返回信息的处理逻辑。

    分析http包的运行机制:

    1. 创建Listen Socket,监听指定的端口,等待客户端请求到来。
    2. Listen Socket接收客户端的请求,得到Client Socket,接下来通过Client Socket与客户端通信。
    3. 处理客户端请求,首先从Client Socket 读取HTTP请求的协议头,如果是POST方法,还可能要读取客户端提交的数据,然后交给相应的handler处理请求,handler处理完毕准备好客户端需要的数据,通过Client Socket写给客户端。

          整个过程中,我们需要了解清楚三个问题,如何监听端口、如何接收客户端请求、如何分配handler,这样也就知道Go语言是如何让Web运行起来的。

          以上只是简单的包执行流程,如果你要了解http连接处理流程,你看看下图:然后可以深入了解里面的运行机制。

          请开始你的表演,践行,践行,再践行。未完待续。。。

    相关文章

      网友评论

          本文标题:跟我一起学习GO语言011——Go语言搭建一个Web服务器

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