
本文介绍了在 Go 语言中如何获取 HTTP 请求参数,重点讲解了 `r.FormValue()` 方法的使用。通过示例代码,展示了如何从 URL 查询字符串中提取参数,并说明了其优先级规则。掌握此方法,可以轻松地在 Go Web 应用中处理请求参数。
在 Go 语言中处理 HTTP 请求时,经常需要获取请求中携带的参数。与 Node.js 中的 request.param('token') 类似,Go 提供了 net/http 包中的 Request 类型的 FormValue() 方法来获取请求参数。
FormValue() 方法的定义如下:
func (r *Request) FormValue(key string) string
它接收一个字符串类型的参数 key,表示要获取的参数名,并返回该参数的第一个值。如果请求中不存在该参数,则返回空字符串。
FormValue() 的工作原理
FormValue() 方法会优先从 POST 和 PUT 请求的 body 中查找参数,然后才会从 URL 查询字符串中查找。如果需要访问同一个键的多个值,则需要使用 ParseForm() 方法。
示例代码
以下是一个简单的 Go Web 服务器,演示了如何使用 FormValue() 方法获取 URL 查询字符串中的 token 参数:
婚纱影楼小程序提供了一个连接用户与影楼的平台,相当于影楼在微信的官网。它能帮助影楼展示拍摄实力,记录访客数据,宣传优惠活动。使用频率高,方便传播,是影楼在微信端宣传营销的得力助手。功能特点:样片页是影楼展示优秀摄影样片提供给用户欣赏并且吸引客户的。套系页是影楼根据市场需求推出的不同套餐,用户可以按照自己的喜好预定套系。个人中心可以查看用户预约的拍摄计划,也可以获取到影楼的联系方式。
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", home)
http.ListenAndServe(":4000", nil)
}
func home(w http.ResponseWriter, r *http.Request) {
token := r.FormValue("token")
fmt.Fprintf(w, "Hello %s
", token)
}在这个例子中,home 函数处理根路径的 HTTP 请求。r.FormValue("token") 用于获取 URL 中名为 token 的参数的值,并将其用于生成 HTML 响应。
运行示例
- 将代码保存为 main.go 文件。
- 在终端中运行 go run main.go 命令。
- 在浏览器中访问 http://localhost:4000/?token=ABCDEFGHIJKLMNOPQRSTUVWXYZ。
你将在浏览器中看到 "Hello ABCDEFGHIJKLMNOPQRSTUVWXYZ"。
注意事项
- FormValue() 方法会自动调用 ParseMultipartForm 和 ParseForm 方法,因此无需手动调用。
- 如果需要处理更复杂的表单数据,例如上传文件,则需要使用 ParseMultipartForm 方法。
- 为了安全起见,应该对从请求中获取的参数进行验证和过滤,以防止恶意攻击。
总结
r.FormValue() 方法是 Go 语言中获取 HTTP 请求参数的常用方法。它简单易用,可以方便地从 URL 查询字符串或请求 body 中提取参数。通过理解其工作原理和注意事项,可以更好地在 Go Web 应用中使用它。









