优质广告供应商

广告是为了更好地支持作者创作

GO——学习笔记(十):搭建简单的Web服务器

上篇:GO——学习笔记(九)

下篇:GO——学习笔记(十一)

参考:

https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/03.2.md

示例代码——go_9

https://github.com/jiutianbian/golang-learning/blob/master/go_9/main.go

搭建简单的Web服务器

web应用的helloworld

相对于java大部分情况需要将web程序打包成war包,然后通过tomact或者其他服务器来发布http服务不同。通过golang里面提供的完善的net/http包,可以很方便的就搭建起来一个可以运行的Web服务,无需第三方的web服务器,可以认为net/http包实现了web服务器的功能。

package main

import (
    "fmt"
    "net/http"
)

func goodgoodstudy(response http.ResponseWriter, request http.Request) {
    fmt.Println(request.URL.Path)        //request:http请求       response.Write([]byte("day day up")) //response:http响应
}

func main() {

    http.HandleFunc("/", goodgoodstudy) //设置访问的监听路径,以及处理方法

    http.ListenAndServe(":9000", nil) //设置监听的端口
}

通过浏览器访问

http://localhost:9000/

结果

访问结果

自定义路由

查看http的源码,发现 http.HandleFunc 是默认建了一个DefaultServeMux路由来分发http请求

// DefaultServeMux is the default ServeMux used by Serve.
var DefaultServeMux = NewServeMux()

// HandleFunc registers the handler function for the given pattern
// in the DefaultServeMux.
// The documentation for ServeMux explains how patterns are matched.
func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
    DefaultServeMux.HandleFunc(pattern, handler)
}

我们可以自己新建一个路由来分发请求,不用DefaultServeMux,代码如下

package main

import (
    "fmt"
    "net/http"
)

func goodgoodstudy(response http.ResponseWriter, request *http.Request) {
    fmt.Println(request.URL.Path)        //通过 request,执行http请求的相关操作
    response.Write([]byte("day day up")) //通过 response,执行http的响应相关操作
}

func nihao(response http.ResponseWriter, request *http.Request) {
    fmt.Println("nihao~~~")
    response.Write([]byte("ni hao"))
}

func main() {
    mux := http.NewServeMux()
    mux.HandleFunc("/", goodgoodstudy) //设置访问的监听路径,以及处理方法

    mux.HandleFunc("/nihao", nihao)

    http.ListenAndServe(":9000", mux) //设置监听的端口
}

通过浏览器访问

http://localhost:9000/nihao

结果

访问结果

优质广告供应商

广告是为了更好地支持作者创作

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 131,289评论 18 138
  • 序言 由于本人一直从事Web服务器端的程序开发,所以在学习Golang也想从Web这里开始学起,如果对Golang...
    盏茶_作酒阅读 2,752评论 0 19
  • 优质广告供应商

    广告是为了更好地支持作者创作

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 166,817评论 24 703
  • 维尼夫妇 尼坤 宋茜 khuntoria 2010.6.1 在韩国的63大厦相遇 那天他们在63楼写下想对对方说的...
    呆梨呆梨阅读 828评论 0 1
  • 第一点,以后如果有可能的话,千万不要熬夜。昨天晚上如果这里找到的鞋不拖延或者说嗯,找到了,自己想办法解决,最大的困...
    蓝果果的笔记本阅读 63评论 0 0
  • 找资料时,突然看到了这张照片,时光一下子倒回了几年前。 那时候,无忧无虑,没事就背个画架去写生。 温暖的清晨,或者...
    高盼画画阅读 317评论 0 8
  • 优质广告供应商

    广告是为了更好地支持作者创作

  • 歌词: ———————— 无聊望见了犹豫 达到理想不太易 即使有信心 斗志却抑止 谁人定我去或留 定我心中的宇宙 ...
    模型化思维阅读 1,493评论 0 2