package main
import (
"fmt"
"log"
"net/http"
"strings"
)
func main() {
http.HandleFunc("/testendpoint/", testendpoint)
err := http.ListenAndServe(":8888", nil)
if err != nil {
log.Println("ListenAndServe: ", err)
}
}
func testendpoint(w http.ResponseWriter, r *http.Request) {
param1 := r.FormValue("param1")
fmt.Fprintf( w, "Parameter1: %s ", param1)
param2 := strings.Split(r.URL.Path, "/")
if len(param2) > 4 {
fmt.Fprintf( w, " Parameter2: %s", param2[5])
}
}
您可以在aapi playground 这里运行代码
将此添加到您的访问URL中:/mypathparameeter?param1=myqueryparam
我想现在留下上面的链接,因为它为您提供了一个很好的运行代码的地方,而且我相信能够看到它的实际效果是有帮助的,但是让我解释一些典型情况,您可能需要一个post参数。
开发人员通常会使用多部分表单数据从请求中提取文件或大量数据时,将其发送到后端服务器。因此,在问题的上下文中,我不认为这与本题相关。他正在寻找通常意味着表单提交数据的post参数。通常,表单提交参数会被发送到后端服务器。
当用户从HTML向golang提交登录表单或注册数据时,客户端发送的内容类型标头通常为application/x-www-form-urlencoded,这是问题所询问的,这些将是表单POST参数,并使用r.FormValue("param1")提取。
在从post请求体中获取json的情况下,您将获取整个post请求体并将原始json解组到结构体中,或者在从请求体中提取数据后使用库解析数据,内容类型标头为application/json。
内容类型标头在很大程度上负责解析来自客户端的数据方式,我已经举了2种不同内容类型的示例,但还有许多其他内容类型。