Update 15.2.md (#674)

* Update 15.2.md

* Update 15.2.md
This commit is contained in:
marjune
2019-07-11 12:06:21 +08:00
committed by ᴊ. ᴄʜᴇɴ
parent 4866b1922c
commit d755ccc849

View File

@@ -16,9 +16,9 @@ Http是一个比tcp更高级的协议它描述了客户端浏览器如何与
表单属性实际上是一个`map[string][]string`类型。网页服务器返回了一个`http.Response`,它是通过`http.ResponseWriter`对象输出的这个对象整合了HTTP服务器的返回结果通过对它写入内容我们就将数据发送给了HTTP客户端。
现在我们还需要编写网页服务器必须执行的程序,它是如何处理请求的呢。这是在`http.HandleFunc`函数中完成的,就是在这个例子中当根路径“/”url地址是http://localhost:8080 )被请求的时候(或者这个服务器上的其他地址),`HelloServer`函数就被执行了。这个函数是`http.HandlerFunc`类型的它们通常用使用Prehandler来命名在前边加了一个Pref前缀。
现在我们还需要编写网页服务器必须执行的程序,它是如何处理请求的呢。这是在`http.HandleFunc`函数中完成的,就是在这个例子中当根路径“/”url地址是http://localhost:8080 )被请求的时候(或者这个服务器上的其他地址),`HelloServer`函数就被执行了。这个函数是`http.HandlerFunc`类型的它们通常用使用Prefhandler来命名在前边加了一个Pref前缀。
`http.HandleFunc`注册了一个处理函数(这里是`HelloServer`)来处理对应`/`的请求。
`http.HandleFunc`注册了一个处理函数这里是`HelloServer`来处理对应`/`的请求。
`/`可以被替换为其他特定的url比如`/create``/edit`等等你可以为每一个特定的url定义一个单独的处理函数。这个函数需要两个参数第一个是`ReponseWriter`类型的`w`;第二个是请求`req`。程序向`w`写入了`Hello``r.URL.Path[1:]`组成的字符串后边的`[1:]`表示“创建一个从第一个字符到结尾的子切片”,用来丢弃掉路径开头的“/”,`fmt.Fprintf()`函数完成了本次写入(请看[章节12.8](12.8.md));另外一种写法是`io.WriteString(w, "hello, world!\n")`
@@ -62,6 +62,7 @@ Starting Process E:/Go/GoBoek/code_examples/chapter_14/hello_world_webserver.exe
```go
http.ListenAndServe(":8080", http.HandlerFunc(HelloServer))
```
2`fmt.Fprint``fmt.Fprintf`都是用来写入`http.ResponseWriter`的不错的函数(他们实现了`io.Writer`)。
比如我们可以使用
```go
@@ -70,7 +71,9 @@ fmt.Fprintf(w, "<h1>%s<h1><div>%s</div>", title, body)
来构建一个非常简单的网页并插入`title``body`的值
如果你需要更多复杂的替换,使用模板包(请看[章节15.7](15.7.md)
3如果你需要使用安全的https连接使用`http.ListenAndServeTLS()`代替`http.ListenAndServe()`
4`http.HandleFunc("/", Hfunc)`中的`HFunc`是一个处理函数,如下:
```go
func HFunc(w http.ResponseWriter, req *http.Request) {