不处理GET in net/http golang
我正在尝试关闭处理golang中的GET请求。 我只是想处理这个职位 有可能吗 这样做的原因是,每当我转到localhost:8080并多次刷新页面时,我都可以看到golang分配了越来越多的内存 以下是我的测试代码:不处理GET in net/http golang,http,go,Http,Go,我正在尝试关闭处理golang中的GET请求。 我只是想处理这个职位 有可能吗 这样做的原因是,每当我转到localhost:8080并多次刷新页面时,我都可以看到golang分配了越来越多的内存 以下是我的测试代码: package main import ( "fmt" "net/http" "encoding/json" ) type test_struct struct { Test string } var t test_struct func handleP
package main
import (
"fmt"
"net/http"
"encoding/json"
)
type test_struct struct {
Test string
}
var t test_struct
func handlePOST(rw http.ResponseWriter, req *http.Request) {
switch req.Method {
case "POST":
decoder := json.NewDecoder(req.Body)
decoder.Decode(&t)
defer req.Body.Close()
fmt.Println(t.Test)
}
}
func main() {
http.HandleFunc("/", handlePOST)
http.ListenAndServe(":8080", nil)
}
您不能处理
GET
请求,Go的HTTP服务器(或者更确切地说是它的)只允许您在将请求分派给处理程序之前指定路径模式。HTTP方法相关的路由只能发生在处理程序级别
请注意,某些外部mux库只允许将处理程序注册到特定的HTTP方法,但基于此的决策和路由也会发生在这些库的“隐藏”处理程序中
您所做的是最好的:如果HTTP方法不是您想要处理的方法,只需在处理程序中不执行任何操作,或者更好:发回HTTP.StatusMethodNotAllowed
错误响应:
func myHandler(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Only POST is allowed", http.StatusMethodNotAllowed)
return
}
var t test_struct // Use local var not global, else it's a data race
decoder := json.NewDecoder(r.Body)
if err := decoder.Decode(&t); err != nil {
fmt.Println("Error decoding:", err)
}
fmt.Println(t.Test)
}
您不能处理
GET
请求,Go的HTTP服务器(或者更确切地说是它的)只允许您在将请求分派给处理程序之前指定路径模式。HTTP方法相关的路由只能发生在处理程序级别
请注意,某些外部mux库只允许将处理程序注册到特定的HTTP方法,但基于此的决策和路由也会发生在这些库的“隐藏”处理程序中
您所做的是最好的:如果HTTP方法不是您想要处理的方法,只需在处理程序中不执行任何操作,或者更好:发回HTTP.StatusMethodNotAllowed
错误响应:
func myHandler(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Only POST is allowed", http.StatusMethodNotAllowed)
return
}
var t test_struct // Use local var not global, else it's a data race
decoder := json.NewDecoder(r.Body)
if err := decoder.Decode(&t); err != nil {
fmt.Println("Error decoding:", err)
}
fmt.Println(t.Test)
}
那么问题出在哪里呢?我可以看到Golang处理GET请求,即使函数没有定义这样做。每当我进入程序的端口时,我都能看到内存被分配,这增加了内存的使用。我希望避免这种行为。“我可以看到内存被分配,这会增加内存使用量”,可能不会。很难找到泄漏的内存。查看过程监视器或顶部没有帮助。那么问题出在哪里呢?默认情况下,所有类型的请求都在http.HandleFunc(“/”,handlePOST)中处理。我能用简单的方法把它关掉吗?@Mac不,你不能。您正在做的是最好的方法:如果HTTP方法不是
POST
,则不在处理程序中执行任何操作。那么问题出在哪里?我可以看到Golang处理GET请求,即使函数没有定义这样做。每当我进入程序的端口时,我都能看到内存被分配,这增加了内存的使用。我希望避免这种行为。“我可以看到内存被分配,这会增加内存使用量”,可能不会。很难找到泄漏的内存。查看过程监视器或顶部没有帮助。那么问题出在哪里呢?默认情况下,所有类型的请求都在http.HandleFunc(“/”,handlePOST)中处理。我能用简单的方法把它关掉吗?@Mac不,你不能。您所做的是最好的方法:如果HTTP方法不是POST
,则不在处理程序中执行任何操作。