PHP转Go系列 | GET 和 POST 请求的使用姿势
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET":
getHandler(w, r)
case "POST":
postHandler(w, r)
default:
http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed)
}
}
func getHandler(w http.ResponseWriter, r *http.Request) {
// 获取查询参数
query := r.URL.Query()
name := query.Get("name")
fmt.Fprintf(w, "Hello, %s!", name)
}
func postHandler(w http.ResponseWriter, r *http.Request) {
// 解析请求体
body, err := ioutil.ReadAll(r.Body)
if err != nil {
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
}
defer r.Body.Close()
// 假设请求体是URL编码的表单数据
formData := string(body)
fmt.Fprintf(w, "Form Data: %s", formData)
}
这段代码展示了如何在Go中处理HTTP GET和POST请求。它定义了一个简单的HTTP服务器,并根据请求的方法类型,使用不同的处理函数来处理请求。对于GET请求,它会从URL中获取查询参数并返回;对于POST请求,它会读取请求体中的数据,并将其返回给客户端。
评论已关闭