review 4.1
This commit is contained in:
4
3.4.md
4
3.4.md
@@ -39,7 +39,7 @@ Go在等待客户端请求里面是这样写的:
|
||||
ServeHTTP(ResponseWriter, *Request) // 路由实现器
|
||||
}
|
||||
|
||||
handler是一个接口,但是前一小节中的`sayhelloName`函数并没有实现ServeHTTP这个接口,为什么能添加呢?原来在http包里面还定义了一个类型`HandlerFunc`,我们定义的函数`sayhelloName`就是这个handlerFunc调用之后的结果,这个类型默认就实现了ServeHTTP这个接口,即我们调用了HandlerFunc(f),类似强制类型转换f成为handlerFunc类型,这样f就拥有了ServHTTP方法。
|
||||
handler是一个接口,但是前一小节中的`sayhelloName`函数并没有实现ServeHTTP这个接口,为什么能添加呢?原来在http包里面还定义了一个类型`HandlerFunc`,我们定义的函数`sayhelloName`就是这个HandlerFunc调用之后的结果,这个类型默认就实现了ServeHTTP这个接口,即我们调用了HandlerFunc(f),类似强制类型转换f成为handlerFunc类型,这样f就拥有了ServHTTP方法。
|
||||
|
||||
type HandlerFunc func(ResponseWriter, *Request)
|
||||
|
||||
@@ -157,4 +157,4 @@ handler是一个接口,但是前一小节中的`sayhelloName`函数并没有
|
||||
* 下一节: [小节](<3.5.md>)
|
||||
|
||||
## LastModified
|
||||
* $Id$
|
||||
* $Id$
|
||||
|
||||
6
4.1.md
6
4.1.md
@@ -77,7 +77,7 @@ login函数中我们根据`r.Method`来判断是显示登录界面还是处理
|
||||
|
||||
`r.Form`里面包含了所有请求的URL中query-string、POST的数据、PUT的数据,所有当你在URL的query-string字段和POST冲突时,会保存成一个slice,里面存储了多个值,Go官方文档中说在接下来的版本里面将会把POST、GET这些数据分离开来。
|
||||
|
||||
现在我们修改一下login.gtpl里面form的action值`http://127.0.0.1:9090/login`修改为`http://127.0.0.1:9090/login?username=astaxie`,再次测试,服务器的输出username是不是一个slice。我服务器端的输出如下:
|
||||
现在我们修改一下login.gtpl里面form的action值`http://127.0.0.1:9090/login`修改为`http://127.0.0.1:9090/login?username=astaxie`,再次测试,服务器的输出username是不是一个slice。s服务器端的输出如下:
|
||||
|
||||

|
||||
|
||||
@@ -93,7 +93,7 @@ login函数中我们根据`r.Method`来判断是显示登录界面还是处理
|
||||
fmt.Println(v.Get("friend"))
|
||||
fmt.Println(v["friend"])
|
||||
|
||||
|
||||
Tips: Request请求也提供了FormValue()函数来获取用户提交的参数。如r.Form["username"]也可写成r.FormValue("username")。调用r.FormValue时会自动调用r.ParseForm,所以不必提前调用。r.FormValue只会返回同名参数中的第一个,若参数不存在则返回空字符串。
|
||||
|
||||
## links
|
||||
* [目录](<preface.md>)
|
||||
@@ -101,4 +101,4 @@ login函数中我们根据`r.Method`来判断是显示登录界面还是处理
|
||||
* 下一节: [验证表单的输入](<4.2.md>)
|
||||
|
||||
## LastModified
|
||||
* $Id$
|
||||
* $Id$
|
||||
|
||||
Reference in New Issue
Block a user