厚土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)

原文发表时间:2018-01-01

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DannyHoo的专栏

底牌项目中上传牌谱功能之编辑标准模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/de...

1193
来自专栏hbbliyong

WPF命令(Command)介绍、命令和数据绑定集成应用

要开始使用命令,必须做三件事:                                               一:定义一个命令       ...

4523
来自专栏程序员的诗和远方

TypeScript 中使用 CSS Modules

CSS 的全局性 相当长一段时间 CSS 总是在页面上作为一个全局的存在,以前这个『特性』影响还不算很大,命名上注意一点,比如使用 BEM 也能一定程度上解决问...

5007
来自专栏林德熙的博客

win10 uwp 显示SVG win2d 使用 svg

这些图片在http://www.zcool.com.cn/下载,不知道是不是不能直接用

1711
来自专栏大内老A

ASP.NET:创建Linked ValidationSummary, 深入理解ASP.NET的Validation

我想对于ASP.NET的Validator控件已经熟悉的不能再熟悉了。我们 已经习惯了用Validator控件来验证我们在表单的输入,并通过Validation...

3208
来自专栏Golang语言社区

神奇的go语言(网页下载)

目前,网上关于网页爬行的代码很多。但是,自从看了go语言的web下载代码之后,我才发现原来它的网页下载代码才是最简单的。不信的话,大家可以看一下, packa...

39710
来自专栏狮乐园

codereview-s8

之后再efficiencyView方法中调用stopPropagation方法阻止事件冒泡

893
来自专栏每日一篇技术文章

go - os包 彻头彻尾用法使用

os包提供了操作系统函数的不依赖平台的接口。设计为Unix风格的,虽然错误处理是go风格的;失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。例如,如...

2576
来自专栏林德熙的博客

win10 uwp 如何创建修改保存位图 创建保存图片在 Image 控件使用WriteableBitmap 转换通过读写像素转换 CanvasBitmap

在 UWP 使用底层的图像渲染就是使用 Softwarebitmap ,这个类提供直接数据修改,可以使用这个类进行软渲染。实际上 Softwarebitmap ...

3121
来自专栏coder修行路

Go实现海量日志收集系统(三)

2183

扫码关注云+社区

领取腾讯云代金券