Skip to content

Commit 2a33e48

Browse files
committed
review 错误语句
1 parent 4328ef4 commit 2a33e48

File tree

4 files changed

+58
-58
lines changed

4 files changed

+58
-58
lines changed

3.4.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Go在等待客户端请求里面是这样写的:
3939
ServeHTTP(ResponseWriter, *Request) // 路由实现器
4040
}
4141

42-
handler是一个接口,但是我们定义的函数`sayhelloName`没有实现ServeHTTP这个接口,为什么能添加呢?原来在http包里面还定义了一个类型`HandlerFunc`,我们定义的函数`sayhelloName`就是这个handlerFunc调用之后的结果,这个类型默认就实现了ServeHTTP这个接口,即我们调用了HandlerFunc(f),类似强制类型转换f成为handlerFunc类型,这样f就拥有了ServHTTP方法。
42+
handler是一个接口,但是前一小节中的`sayhelloName`函数并没有实现ServeHTTP这个接口,为什么能添加呢?原来在http包里面还定义了一个类型`HandlerFunc`,我们定义的函数`sayhelloName`就是这个handlerFunc调用之后的结果,这个类型默认就实现了ServeHTTP这个接口,即我们调用了HandlerFunc(f),类似强制类型转换f成为handlerFunc类型,这样f就拥有了ServHTTP方法。
4343

4444
type HandlerFunc func(ResponseWriter, *Request)
4545

@@ -69,9 +69,9 @@ handler是一个接口,但是我们定义的函数`sayhelloName`没有实现Se
6969
return h
7070
}
7171

72-
原来他是根据用户请求的URL和路由器里面存储的map去匹配的,当匹配到之后返回存储的handler,然后handler实现了ServHTTP接口,调用这个ServHTTP就可以执行到相应的函数了
72+
原来他是根据用户请求的URL和路由器里面存储的map去匹配的,当匹配到之后返回存储的handler,调用这个handler的ServHTTP接口就可以执行到相应的函数了
7373

74-
通过上面这个介绍,我们了解了路由器的整个执行过程,Go其实支持外部实现的路由器,因为我们在调用`ListenAndServe`的时候,第二个参数就是Handler,只要实现了ServHTTP函数就可以
74+
通过上面这个介绍,我们了解了整个路由过程,Go其实支持外部实现的路由器 `ListenAndServe`的第二个参数就是用以配置外部路由器的,它是一个Handler接口,即外部路由器只要实现了Handleer接口就可以,我们可以在自己实现的路由器的ServHTTP里面实现自定义路由功能
7575

7676
如下代码所示,我们自己实现了一个简易的路由器
7777

3.5.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#3.5小结
2-
这一章我们通过介绍Web工作方式介绍了HTTP协议的相关信息,通过类比引出了Go怎么运行Web,实现了Go的web服务器,通过对Go运行Web的代码进行分析,深入了解了Go执行Web的整个流程,最后我们对Go语言的http包进行了详细的分析
2+
这一章我们介绍了HTTP协议, DNS解析的过程, 如何用go实现一个简陋的web server。并深入到net/http包的源码中为大家揭开如何实现此server的秘密
33

4-
通过这一章的学习我希望你能够对Go开发Web有了初步的了解,我们也看到相应的代码了,这个开发是很方便的,同时又是相当的灵活。
4+
我希望通过这一章的学习,你能够对Go开发Web有了初步的了解,我们也看到相应的代码了,Go开发Web应用是很方便的,同时又是相当的灵活。
55

66
## links
77
* [目录](<preface.md>)

4.1.md

+38-38
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,27 @@
1212

1313
http包里面有一个很简单的方式就可以获取,我们在前面web的例子基础之上来看看怎么处理login,怎么读取form数据
1414

15-
16-
package main
17-
18-
import (
19-
"fmt"
20-
"net/http"
21-
"strings"
22-
"log"
23-
)
24-
25-
func sayhelloName(w http.ResponseWriter, r *http.Request) {
26-
r.ParseForm() //解析参数,默认是不会解析的
27-
fmt.Println(r.Form) //这些信息是输出到服务器端的打印信息
28-
fmt.Println("path", r.URL.Path)
29-
fmt.Println("scheme", r.URL.Scheme)
30-
fmt.Println(r.Form["url_long"])
31-
for k, v := range r.Form {
32-
fmt.Println("key:", k)
33-
fmt.Println("val:", strings.Join(v, ""))
34-
}
35-
fmt.Fprintf(w, "Hello astaxie!") //这个写入到w的是输出到客户端的
15+
16+
package main
17+
18+
import (
19+
"fmt"
20+
"net/http"
21+
"strings"
22+
"log"
23+
)
24+
25+
func sayhelloName(w http.ResponseWriter, r *http.Request) {
26+
r.ParseForm() //解析参数,默认是不会解析的
27+
fmt.Println(r.Form) //这些信息是输出到服务器端的打印信息
28+
fmt.Println("path", r.URL.Path)
29+
fmt.Println("scheme", r.URL.Scheme)
30+
fmt.Println(r.Form["url_long"])
31+
for k, v := range r.Form {
32+
fmt.Println("key:", k)
33+
fmt.Println("val:", strings.Join(v, ""))
34+
}
35+
fmt.Fprintf(w, "Hello astaxie!") //这个写入到w的是输出到客户端的
3636
}
3737

3838
func login(w http.ResponseWriter, r *http.Request){
@@ -42,21 +42,21 @@ http包里面有一个很简单的方式就可以获取,我们在前面web的
4242
}else{
4343
//请求的是登陆数据,那么执行登陆的逻辑判断
4444
}
45-
}
46-
47-
func main() {
45+
}
46+
47+
func main() {
4848
http.HandleFunc("/", sayhelloName) //设置访问的路由
49-
http.HandleFunc("/login", login) //设置访问的路由
50-
err := http.ListenAndServe(":9090", nil) //设置监听的端口
51-
if err != nil {
52-
log.Fatal("ListenAndServe: ", err)
53-
}
49+
http.HandleFunc("/login", login) //设置访问的路由
50+
err := http.ListenAndServe(":9090", nil) //设置监听的端口
51+
if err != nil {
52+
log.Fatal("ListenAndServe: ", err)
53+
}
5454
}
5555

5656

57-
上面的代码我们可以看出来获取请求方法的是`r.Method`,这个是字符串类型,返回GET, POST, PUT等method信息.
57+
通过上面的代码我们可以看出获取请求方法是通过`r.Method`来完成的,这是个字符串类型的变量,返回GET, POST, PUT等method信息.
5858

59-
`r.Form`里面包含了所有请求的URL中query-string、POST的数据、PUT的数据,所有当你在URL的query-string字段和POST冲突时,会保存成一个slice,里面存储了多个值,Go官方说这个在接下来的版本里面会把POST、GET这些数据分离开来。
59+
`r.Form`里面包含了所有请求的URL中query-string、POST的数据、PUT的数据,所有当你在URL的query-string字段和POST冲突时,会保存成一个slice,里面存储了多个值,Go官方文档中说在接下来的版本里面将会把POST、GET这些数据分离开来。
6060

6161
`r.Form`是一个url.Values类型,里面存储的是对应的key=value信息,下面展示了可以对form进行的一些操作,
6262

@@ -70,12 +70,12 @@ http包里面有一个很简单的方式就可以获取,我们在前面web的
7070
fmt.Println(v.Get("friend"))
7171
fmt.Println(v["friend"])
7272

73-
默认情况下,Handler里面是不会自动解析form的,必须显示的调用`r.ParseForm()`,那么你才能对这个参数进行操作。
73+
默认情况下,Handler里面是不会自动解析form的,必须显示的调用`r.ParseForm()`后,你才能对这个参数进行操作。
74+
75+
## links
76+
* [目录](<preface.md>)
77+
* 上一节: [表单](<4.md>)
78+
* 下一节: [验证表单的输入](<4.2.md>)
7479

75-
## links
76-
* [目录](<preface.md>)
77-
* 上一节: [表单](<4.md>)
78-
* 下一节: [验证表单的输入](<4.2.md>)
79-
80-
## LastModified
80+
## LastModified
8181
* $Id$

4.md

+15-15
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,22 @@
88
* 5. [处理文件上传](4.5.md)
99
* 6. [小结](4.6.md)
1010

11-
表单是我们平常编写Web应用常用的工具,通过表单我们可以方便的让客户端和服务器端进行数据的交流。对于以前开发过Web的用户来说表单都非常熟悉,但是对于C/C++程序员来说,这是个很陌生的东西,那么什么是表单呢?
12-
13-
表单是一个包含表单元素的区域。表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素。表单使用表单标签(\<form\>)定义。
14-
15-
<form>
16-
...
17-
input 元素
18-
...
11+
表单是我们平常编写Web应用常用的工具,通过表单我们可以方便的让客户端和服务器进行数据的交互。对于以前开发过Web的用户来说表单都非常熟悉,但是对于C/C++程序员来说,这可能是一个有些陌生的东西,那么什么是表单呢?
12+
13+
表单是一个包含表单元素的区域。表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素。表单使用表单标签(\<form\>)定义。
14+
15+
<form>
16+
...
17+
input 元素
18+
...
1919
</form>
20-
21-
Go里面对于form处理已经有很方便的方法了,在Request里面的有专门的form处理,可以很方便的整合到Web开发里面来,4.1小节里面讲讲解Go如何处理表单的输入。但是对于表单中用户输入的信息那么容易就引入到程序中来,由于不能信任任何用户的输入,所以我们需要对这些输入进行有效的验证,4.2小节就讲如何进行一些普通的验证进行详细的演示
22-
23-
HTTP协议是一种无状态的协议,那么如何才能辨别是同一个用户呢?同时又如何保证一个表单不出现多次递交的情况呢?4.3和4.4小节里面讲对cookie等进行详细讲解
24-
25-
表单还有一个很大的功能就是能够上传文件,那么Go是如何处理文件上传的呢?针对大文件上传我们如何有效的处理呢?4.5小节讲带领你学习Go处理文件上传的功能
26-
20+
21+
Go里面对于form处理已经有很方便的方法了,在Request里面的有专门的form处理,可以很方便的整合到Web开发里面来,4.1小节里面将讲解Go如何处理表单的输入。由于不能信任任何用户的输入,所以我们需要对这些输入进行有效性验证,4.2小节将就如何进行一些普通的验证进行详细的演示
22+
23+
HTTP协议是一种无状态的协议,那么如何才能辨别是否是同一个用户呢?同时又如何保证一个表单不出现多次递交的情况呢?4.3和4.4小节里面将对cookie(cookie是存储在客户端的信息,能够每次通过header和服务器进行交互的数据)等进行详细讲解
24+
25+
表单还有一个很大的功能就是能够上传文件,那么Go是如何处理文件上传的呢?针对大文件上传我们如何有效的处理呢?4.5小节我们将一起学习Go处理文件上传的知识
26+
2727

2828
## links
2929
* [目录](<preface.md>)

0 commit comments

Comments
 (0)