在 Go 中终止 HTTP 请求
在 Go 中,您可以通过从 HTTP 处理程序的 ServeHTTP() 方法返回来终止 HTTP 请求。这种方法允许您结束请求并向客户端发送响应。
示例:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Examine incoming parameters if !ok { str := `{"Result":"","Error":"No valid Var"}` fmt.Fprint(w, str) return // Terminate the request } // Continue normal API serving })
注释:
示例:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Examine incoming parameters if !ok { http.Error(w, `Invalid input params!`, http.StatusBadRequest) return // Terminate the request } // Continue normal API serving })
示例:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Examine incoming parameters if !ok { w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusBadRequest) str := `{"Result":"","Error":"No valid Var"}` fmt.Fprint(w, str) return // Terminate the request } // Continue normal API serving })
错误传播:
如果您在外部遇到错误的 ServeHTTP() 时,您必须返回该错误状态,以便 ServeHTTP() 可以终止请求。
示例:
type params struct { // Field definitions for your parameters } func decodeParams(r *http.Request) (*params, error) { p := new(params) // Decode parameters if !ok { return nil, errors.New("Invalid params") } return p, nil } http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { p, err := decodeParams(r) if err != nil { http.Error(w, `Invalid input params!`, http.StatusBadRequest) return // Terminate the request } // Continue normal API serving })
以上是Go中如何有效终止HTTP请求?的详细内容。更多信息请关注PHP中文网其他相关文章!