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

作者:轩脉刃 时间:2024-02-19 22:33:41 

本文实例讲述了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)
    }
}

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

如何创建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语言,HTTP,WEB服务器
0
投稿

猜你喜欢

  • windows系统中Python多版本与jupyter notebook使用虚拟环境的过程

    2022-11-28 13:24:01
  • python 定时修改数据库的示例代码

    2024-01-25 00:31:40
  • 利用numba让python速度提升百倍

    2022-06-12 14:31:02
  • python时间日期函数与利用pandas进行时间序列处理详解

    2023-06-15 20:39:40
  • asp组件上传

    2010-05-27 12:16:00
  • python智联招聘爬虫并导入到excel代码实例

    2023-09-28 14:18:00
  • Oracle字段根据逗号分割查询数据的方法

    2024-01-14 01:34:19
  • Python找出list中最常出现元素的方法

    2022-10-31 14:24:38
  • Python如何实现远程方法调用

    2022-11-11 20:42:15
  • 用virtualenv建立多个Python独立虚拟开发环境

    2023-10-28 06:24:07
  • 如何用C代码给Python写扩展库(Cython)

    2023-06-08 17:06:32
  • 使用python画社交网络图实例代码

    2023-01-17 12:53:46
  • php线性表顺序存储实现代码(增删查改)

    2023-11-19 06:51:53
  • python小例子-缩进式编码+算术运算符+定义与赋值

    2022-09-15 06:03:45
  • Python爬虫抓取指定网页图片代码实例

    2021-10-24 17:17:23
  • EF Core基础入门教程

    2023-07-24 09:01:51
  • MySQL字段类型详解

    2009-01-05 09:23:00
  • 对Keras中predict()方法和predict_classes()方法的区别说明

    2022-11-05 09:13:32
  • python异常触发及自定义异常类解析

    2023-05-02 18:17:01
  • vue中的 $slot 获取插槽的节点实例

    2024-04-30 10:26:58
  • asp之家 网络编程 m.aspxhome.com