0

我有一个 web 应用程序,其中有如下代码:

func handler (w res, r req) {
  if req.Method == POST {
    // create html form 2 with a submit button2
    return ;
  }
  // create html form 1 with a submit button1
  return
} 

func main() {
  handle("/", handler)
}

现在,根 / 已注册到处理程序 func。在第一个请求 (GET) 中,我创建了一个表单并将其发送给用户。如果用户提交了这个表单,我会在“POST”方法下处理它。现在,我在 post 方法处理程序中创建了一个不同的表单,现在我想要一种方法来根据用户在此 form2 中键入的内容执行一些操作,当他提交 form2 时。

go 处理 form2 表单提交的标准方法是什么?我之前做过一些 asp 编程,我们使用表单操作提交到不同的 asp 文件。如何根据解析 form2 提交请求来执行一些操作?

4

1 回答 1

4

如果我对您的理解正确,您想要一种基于请求方法而不仅仅是路径将相同 URL 路由到不同处理程序的方法吗?如果是这样的话...

相比之下,使用 Python + Django,你这样做的方式是非常标准的:

def my_django_view(request):
    if request.method == "POST":
        try_to_process_posted_data()
    elif request.method == "GET":
        show_a_form_to_user()

如果您正在尝试基于路径请求方法(GET、POST、DELETE,...)进行 URL 路由等更高级的事情,那么您可能会对Gorilla.mux 之类的东西感兴趣

它提供了一些友好的 URL 路由方法:

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/", YourGETHandlerFunc).Methods("GET")
    router.HandleFunc("/", YourPOSTHandlerFunc).Methods("POST")
    http.Handle("/", router)
}

如果您正在寻找更多用于 Web 开发的资源...

于 2012-05-25T16:15:09.230 回答