HTTP 요청 처리 종료
HTTP 요청을 처리할 때 처리를 종료하고 오류 응답을 보내야 하는 시나리오가 있을 수 있습니다. . 이는 ServeHTTP() 메소드에서 반환하여 달성할 수 있습니다.
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Inspect incoming parameters if !IsValid(r.URL.Query()) { str := `{"Result":"","Error":"Invalid Parameters"}` fmt.Fprint(w, str) return } // Continue normal API processing })
HTTP 오류 코드 사용
보다 정교한 오류 처리를 위해서는 적절한 반환을 권장합니다. 기본값 200 대신 HTTP 오류 코드 좋습니다.
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Inspect incoming parameters if !IsValid(r.URL.Query()) { http.Error(w, "Invalid Parameters", http.StatusBadRequest) return } // Continue normal API processing })
JSON 형식 오류 응답
JSON 형식으로 더 자세한 오류 응답을 제공하려면:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Inspect incoming parameters if !IsValid(r.URL.Query()) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusBadRequest) str := `{"Result":"","Error":"Invalid Parameters"}` fmt.Fprint(w, str) return } // Continue normal API processing })
중첩된 오류 전파 함수
ServeHTTP()에서 호출된 함수에서 오류 처리가 수행되는 경우 ServeHTTP()가 요청 처리를 종료할 수 있도록 오류 상태를 반환해야 합니다.
func decodeParams(r *http.Request) (*params, error) { p := new(params) // Decode parameters and check their validity if !ok { return nil, errors.New("Invalid Parameters") } return p, nil } func handleRequest(w http.ResponseWriter, r *http.Request) { p, err := decodeParams(r) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } // Continue normal API processing }
위 내용은 Go에서 HTTP 요청 처리를 적절하게 처리하고 종료하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!