厚土Go学习笔记 | 34. 一个简单的 web 服务器实现

go 语言实现 web 服务器很容易。这样就可以很任意的建立 web 应用而互不干扰。当然,端口和IP要规划好。不过这里不讨论这个范畴的内容。我们只实现最基本的通过浏览器能够打印出我们想要的文字就可以了。

我们需要实现 http.Handler

func sayhello_cofox(w http.ResponseWriter, r *http.Request) 

然后用 http.HandleFunc 设置访问的路由

使用 http.ListenAndServe 设置主域名和端口号

err := http.ListenAndServe(":4000", nil)

这个例子中,我们使用 4000 端口。主域名省略。这样所有本机 IP 和域名就都可以使用。

比如:

http://192.168.1.105:4000/
http://127.0.0.1:4000/
http://localhost:4000/

完整代码

package main

import(
    "net/http"
    "fmt"
    "log"
    "time"
    "strings"
)

func sayhello_cofox(w http.ResponseWriter, r *http.Request)  {
    r.ParseForm()   //解析参数,默认是不会解析的
    fmt.Println(r.Form)
    fmt.Println("path", r.URL.Path)
    fmt.Println("scheme", r.URL.Scheme)
    fmt.Println(r.Form["url_long"])
    for k, v := range r.Form{
        fmt.Println("Key:", k)
        fmt.Println("Val:", strings.Join(v, ""))
    }
    fmt.Fprintf(w, "Hello Cofox!" + time.Now().String())
}

func main() {
    http.HandleFunc("/", sayhello_cofox)    //设置访问的路由
    err := http.ListenAndServe(":4000", nil)
    if err != nil {
        log.Fatal("ListenAndServe:", err)
    }
}

本例子编译后运行。然后打开浏览器,输入本地相应地址访问。

我实验的机器是这三个本地地址都可以访问

http://192.168.1.105:4000/
http://127.0.0.1:4000/
http://localhost:4000/

浏览器运行结果

Hello Cofox!2017-08-20 19:03:52.0956481 +0800 CST

本文分享自微信公众号 - Golang语言社区(Golangweb)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Golang语言社区--标准库分析之strconv包

大家好,我是Golang语言社区主编彬哥,这篇是给大家转载的关于Go语言的strconv 包相关的知识。

93870
来自专栏大数据和云计算技术

Go语言入门

最近准备学点新东西,聊聊Go语言入门。 Go是google 09年推出的编程语言,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲...

40550
来自专栏PHP在线

Go语言六周年,2016年初发布Go 1.6

原文出处: Andrew Gerrand 译文出处:oschina 2009年11月10日,Go 语言作为开源项目正式发布。从那开始,已经有超过 780...

375150
来自专栏Golang语言社区

Golang语言社区--Go语言基础第六节函数

大家好,我是Golang语言社区主编彬哥,本篇给大家带来的是关于Go语言中的函数。

39240
来自专栏美团技术团队

Docker 入门介绍

Docker简介 ---- Docker是DotCloud开源的、可以将任何应用包装在Linux container中运行的工具。2013年3月发布首个版本,当...

37680
来自专栏程序员的酒和故事

Go实战--golang中使用RethinkDB(gorethink/gorethink.v3)

生命不止,继续go go go !!! 关于golang中操作数据库,曾经介绍了不少: Go实战–go语言操作sqlite数据库(The way to go) ...

69780
来自专栏程序员的酒和故事

Golang中使用echo框架、MongoDB、JWT搭建REST API

生命不止,继续go go go !!! 之前介绍过golang中restful api的博客,是使用redis作为持久化,httprouter作为框架: Go...

70250
来自专栏Golang语言社区

Golang语言社区--理解 go interface 的 5 个关键点

大家好,我是社区主编彬哥,本篇文章是给大家转载的关于Go语言中interface相关的。

58780
来自专栏程序员的酒和故事

为什么Go语言在中国格外的火

Go语言推出有几年了,似乎不温不火。但是在中国范围内,确实被关注的一塌糊涂。 这是2017年2月份TIOBE出的编程语言排名: ? 在拉勾网上搜索go的职位,结...

1.2K60
来自专栏Golang语言社区

Golang语言社区--Go语言学习资料下载(PDF文件、视频)

大家好,我是社区主编彬哥,今天给大家整理了部分的GO语言相关的学习资料;已经上传至百度网盘;欢迎下载;后面会持续更新:

1.5K80

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励