当前位置: 首页 > 编程笔记 >

Go语言使用HTTP包创建WEB服务器的方法

房冥夜
2023-03-14
本文向大家介绍Go语言使用HTTP包创建WEB服务器的方法,包括了Go语言使用HTTP包创建WEB服务器的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Go语言使用HTTP包创建WEB服务器的方法。分享给大家供大家参考,具体如下:

在Golang中写一个http web服务器大致是有两种方法:

1 使用net包的net.Listen来对端口进行监听

2 使用net/http包

这里是讨论如何使用net/http包创建一个web服务器

net/http请求提供了HTTP客户端和服务端的具体实现

http客户端

先看到的是Get,Post,PostForm三个函数。这三个函数直接实现了http客户端

import (

    "fmt"

    "net/http"

    "io/ioutil"

)

func main() {

    response,_ := http.Get("http://www.baidu.com")

    defer response.Body.Close()

    body,_ := ioutil.ReadAll(response.Body)

    fmt.Println(string(body))

}

除了使用这三个函数来建立一个简单客户端,还可以使用:

http.Client和http.NewRequest来模拟请求

package main

import (

    "net/http"

    "io/ioutil"

    "fmt"

)

func main() {

    client := &http.Client{}

    reqest, _ := http.NewRequest("GET", "http://www.baidu.com", nil)

    reqest.Header.Set("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")

    reqest.Header.Set("Accept-Charset","GBK,utf-8;q=0.7,*;q=0.3")

    reqest.Header.Set("Accept-Encoding","gzip,deflate,sdch")

    reqest.Header.Set("Accept-Language","zh-CN,zh;q=0.8")

    reqest.Header.Set("Cache-Control","max-age=0")

    reqest.Header.Set("Connection","keep-alive")

    response,_ := client.Do(reqest)

    if response.StatusCode == 200 {

        body, _ := ioutil.ReadAll(response.Body)

        bodystr := string(body);

        fmt.Println(bodystr)

    }

}

如何创建web服务端?

http包封装地非常bt,只需要两行!!:

package main

import (

    "net/http"

)

func SayHello(w http.ResponseWriter, req *http.Request) {

    w.Write([]byte("Hello"))

}

func main() {

    http.HandleFunc("/hello", SayHello)

    http.ListenAndServe(":8001", nil)

}


进行端口的监听:http.ListenAndServe(":8001", nil)

注册路径处理函数:http.HandleFunc("/hello", SayHello)

处理函数:func SayHello(w http.ResponseWriter, req *http.Request)

golang服务器的效率怎样呢?

看看这个帖子:

http://groups.google.com/group/golang-nuts/browse_thread/thread/cde2cc6278cefc90

node.js is 45% faster than golang(确实伤心)

golang服务端的效率确实没有node.js高,几乎是它的一半。但话说回来,如果一些并发量不是很大的site,还是可以使用golang做服务器的。

希望本文所述对大家Go语言程序设计有所帮助。

 类似资料:
  • 本文向大家介绍Go语言实现简单Web服务器的方法,包括了Go语言实现简单Web服务器的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言实现简单Web服务器的方法。分享给大家供大家参考。具体分析如下: 包 http 通过任何实现了 http.Handler 的值来响应 HTTP 请求: package http type Handler interface { ServeHTTP

  • 本文向大家介绍Go语言Echo服务器的方法,包括了Go语言Echo服务器的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言Echo服务器的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍使用Go语言创建静态文件服务器问题,包括了使用Go语言创建静态文件服务器问题的使用技巧和注意事项,需要的朋友参考一下 上篇关于Go模板库应用 的文章最后我们留下一个问题,页面模板是通过 CDN 引用的 BootStrap 的 css , js 文件。到目前位置我们的服务器还无法伺服客户端的静态文件请求把服务器磁盘上的文件响应给客户端。使用和配置过 Nginx 服务器的一定知道 Ngi

  • 本文向大家介绍go语言实现简单http服务的方法,包括了go语言实现简单http服务的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言实现简单http服务的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍使用Go语言创建WebSocket服务的实现示例,包括了使用Go语言创建WebSocket服务的实现示例的使用技巧和注意事项,需要的朋友参考一下 今天介绍如何用 Go 语言创建 WebSocket 服务,文章的前两部分简要介绍了 WebSocket 协议以及用 Go 标准库如何创建 WebSocket 服务。第三部分实践环节我们使用了 gorilla/websocket 库帮助我们快

  • 我用Go语言创建了一个示例gRPC客户端和服务器(使用原型)。我理解Go语言中的并发模型。但是,我正在尝试理解服务器中接受来自同一客户端(客户端上的多个goroutines)/多个客户端的并行请求的并发模型。 更具体地说: 当一个新的gRPC呼叫到来时,服务器是否创建了一个新的goroutine