From 5cf65385e23acc2e5444266f8d3b7f1606f65bd7 Mon Sep 17 00:00:00 2001 From: astaxie Date: Tue, 4 Sep 2012 18:10:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A03.2=E5=B0=8F=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3.1.md | 2 +- 3.2.md | 58 +++++++++++++++++++++++++++++++++++++++++++ images/3.2.goweb.png | Bin 0 -> 8331 bytes 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 3.2.md create mode 100644 images/3.2.goweb.png diff --git a/3.1.md b/3.1.md index 1544924f..64a1b0cb 100644 --- a/3.1.md +++ b/3.1.md @@ -56,7 +56,7 @@ HTTP是一种让Web服务器与浏览器(客户端)通过Internet发送与接收 ## links * [目录]() - * 上一章: [Web基础](<3.md>) + * 上一节: [Web基础](<3.md>) * 下一节: [GO搭建一个web服务器](<3.2.md>) ## LastModified diff --git a/3.2.md b/3.2.md new file mode 100644 index 00000000..82937ba4 --- /dev/null +++ b/3.2.md @@ -0,0 +1,58 @@ +#3.2 GO搭建一个web服务器 + +前面小节已经介绍了Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的web服务。使用这个包能很简单地对web的路由,静态文件,模版,cookie等数据进行设置和操作。 + +##http包建立web服务器 + + package main + + import ( + "fmt" + "net/http" + "strings" + ) + + func sayhelloName(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 astaxie!") //这个写入到w的是输出到客户端的 + } + + func main() { + http.HandleFunc("/", sayhelloName) + http.ListenAndServe(":9090", nil) + } + +上面这个代码,我们build之后,然后执行web.exe,这个时候其实已经在9090端口监听tcp链接请求了。 + +在浏览器输入`http://localhost:9090` + +可以看到浏览器页面输出了`Hello astaxie!` + +可以换一个地址试试:`http://localhost:9090/?url_long=111&url_long=222` + +看看浏览器输出的是什么,服务器输出的是什么? + +在服务器端输出的信息如下: + +![](images/3.2.goweb.png?raw=true) + +我们看到上面的代码,要编写一个web服务器很简单,只要调用http包的两个函数就可以了。 + + + + +## links + * [目录]() + * 上一节: [Web工作方式](<3.1.md>) + * 下一节: [Go如何使得web工作](<3.3.md>) + +## LastModified + * $Id$ \ No newline at end of file diff --git a/images/3.2.goweb.png b/images/3.2.goweb.png new file mode 100644 index 0000000000000000000000000000000000000000..d6a5382996fb68bdbe0cf046250c7e71706583d3 GIT binary patch literal 8331 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