zoukankan      html  css  js  c++  java
  • Go语言_HTTP包

    在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)
        }
    }

    clip_image001

     

    如何创建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做服务器的。

    实时了解作者更多技术文章,技术心得,请关注微信公众号“轩脉刃的刀光剑影”

    本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名叶剑峰(包含链接http://www.cnblogs.com/yjf512/),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系

  • 相关阅读:
    PZISP自动下载软件运行时出现“应用程序无法启动,因为应用程序的并行配置不正确”
    分析Memcached客户端如何把缓存数据分布到多个服务器上
    WebApi参数传递总结
    [NHibernate]一对多关系(级联删除,级联添加)
    提高SQL查询效率
    jquery validate 详解
    Winform子窗体刷新父窗体
    Windows如何修改MySQL用户root密码
    MySQL 5.6 for Windows 解压缩版配置安装
    获取地图文档(*.mxd)中比例尺问题
  • 原文地址:https://www.cnblogs.com/yjf512/p/2554066.html
Copyright © 2011-2022 走看看