gpt4 book ai didi

使用 Golang 发布 HTML 表单方法

转载 作者:IT王子 更新时间:2023-10-29 02:31:30 25 4
gpt4 key购买 nike

所以,我在 html 中有这个表单。它旨在向 /subscribe 页面发出 POST 请求:

<html>
<form action="/subscribe" method="post">
First Name: <input type="text" name="first_name" placeholder="Willy"/><br/>
Last Name: <input type="text" name="last_name" placeholder="Warmwood"/><br/>
Email: <input type="email" name="email" placeholder="willy.warwood@gmail.com"/><br/>
<input type="submit" value="Submit"/>
</form>
</html>

然后,我在 golang 中有这个路由器:

http.HandleFunc("/subscribe/", SubscribeHandler)

golang 中的这个处理程序:

func SubscribeHandler(w http.ResponseWriter, r *http.Request) {
log.Println(r.Method)
}

但问题是,它总是打印GET

如何post表单,r.Method的值为POST

谢谢

最佳答案

根据文档:

If a subtree has been registered and a request is received naming the subtree root without its trailing slash, ServeMux redirects that request to the subtree root (adding the trailing slash). This behavior can be overridden with a separate registration for the path without the trailing slash.

因为您注册了 "/subscribe/"带有 尾部斜杠,所以它被注册为子树。同样,根据文档:

a pattern ending in a slash names a rooted subtree

因为 HTTP 重定向(实际上)始终是 GET 请求,重定向之后的方法当然是 GET。您可以看到此示例中发生了真正的重定向:https://play.golang.org/p/OcEhVDosTNf

解决方案是同时注册:

http.HandleFunc("/subscribe/", SubscribeHandler)
http.HandleFunc("/subscribe", SubscribeHandler)

或者将您的表单指向带有 / 的表单:

<form action="/subscribe/" method="post">

关于使用 Golang 发布 HTML 表单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51618399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com