
本文讲解如何在 goji 微框架中处理 html get 表单提交,通过 `r.url.query().get()` 或 `r.formvalue()` 安全提取 url 查询参数,并给出完整可运行示例。
Goji 是一个轻量级 HTTP 路由框架,它本身不封装请求解析逻辑,而是直接基于 Go 标准库 net/http 构建。因此,处理表单(包括 GET 请求)需依赖标准 http.Request 的方法,而非框架专属 API。
要从 /?name=test 这类 GET 请求中提取 name 参数,推荐使用以下两种方式(均需先调用 r.ParseForm() 以确保表单数据已解析):
✅ 推荐方式:r.FormValue("name")
自动处理 GET 和 POST 表单,无需区分来源,且已做安全转义和空值容错:
package main
import (
"fmt"
"net/http"
"github.com/zenazn/goji"
"github.com/zenazn/goji/web"
)
func handleForm(w http.ResponseWriter, r *http.Request) {
r.ParseForm() // 必须调用!否则 FormValue 返回空字符串
name := r.FormValue("name")
if name == "" {
fmt.Fprint(w, "请输入姓名,或访问 <a href='/'>首页</a>")
return
}
fmt.Fprintf(w, "你好,%s!你通过 GET 提交了表单。", name)
}
func main() {
staticFilesLocation := "public"
// 静态文件路由(/ → index.html)
goji.Handle("/", http.FileServer(http.Dir(staticFilesLocation)))
// 动态表单处理路由(必须显式注册,GET /?name=xxx 会命中此 handler)
goji.Get("/form", handleForm) // 注意:index.html 中 form action 应设为 "/form"
goji.Serve()
}同时,修改 public/index.html 中的










