美文网首页
Go 学习笔记2 - 构建个简单的 http 服务

Go 学习笔记2 - 构建个简单的 http 服务

作者: 张云飞Vir | 来源:发表于2020-03-13 14:44 被阅读0次

    概述

    Go 自带的 http 包很强大,通过它可以轻松构建个简单的 http 服务。

    ListenAndServe

    ListenAndServe 方法可以开启一个 HTTP 服务,这个函数接收 一个地址,和一个 handler 。一般情况下,第二个参数 handler 写成 nil,也就是 使用默认的 DefaultServeMux。

    通过 Handle 方法 和 HandleFunc 方法,可以添加 许多handler 到 这个默认的DefaultServeMux。示例:

    http.Handle("/foo", fooHandler)
    
    http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
    })
    
    log.Fatal(http.ListenAndServe(":8080", nil))
    

    自定 Server 对象

    更多控制 server 的行为的方式是 创建一个自定的 Server对象 来实现。示例:

    s := &http.Server{
        Addr:           ":8080",
        Handler:        myHandler,
        ReadTimeout:    10 * time.Second,
        WriteTimeout:   10 * time.Second,
        MaxHeaderBytes: 1 << 20,
    }
    log.Fatal(s.ListenAndServe())
    

    完整示例

    package main
    
    import (
      "fmt"
      "net/http"
      "log"
      "html"
    )
    
    
    func main() {
    
      http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
      })
    
      log.Fatal(http.ListenAndServe(":8080", nil))
    
      // 在浏览器 打开网址: http://localhost:8080/bar 即可看到
    }
    

    相关文章

      网友评论

          本文标题:Go 学习笔记2 - 构建个简单的 http 服务

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