오류 처리로 HTTP 요청 종료
Go에서 HTTP를 사용하여 API 서비스를 개발할 때 요청을 중단하고 반환해야 할 수도 있습니다. 특정 조건이 충족되지 않으면 오류 메시지가 표시됩니다. 이를 달성하기 위해 ServeHTTP() 메서드를 효과적으로 사용할 수 있습니다.
ServeHTTP()에서 반환
HTTP 요청을 종료하려면 ServeHTTP() 메서드에서 반환합니다. . 이렇게 하면 요청이 중단되고 fmt.Fprint(w, str) 또는 유사한 메서드를 통해 응답을 보낼 수 있습니다. 예:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Examine incoming params if !ok { str := `{"Result":"","Error":"No valide Var"}` fmt.Fprint(w, str) return } // Do normal API serving })
HTTP 오류 코드
입력 매개변수가 유효하지 않은 경우 대신 HTTP 오류 코드(예: 잘못된 요청의 경우 400)를 보냅니다. 기본값인 200 OK를 권장합니다. http.Error() 함수는 이 목적으로 사용될 수 있습니다:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Examine incoming params if !ok { http.Error(w, "Invalid input params!", http.StatusBadRequest) return } // Do normal API serving })
오류 코드와 함께 JSON 데이터 반환
JSON 데이터를 오류 코드와 함께 다시 보내려면 오류 코드가 있는 경우 Header().Set() 메서드를 사용하여 Content-Type 헤더를 설정할 수 있으며 WriteHeader() 메서드를 사용하여 HTTP 상태를 설정할 수 있습니다. code:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Examine incoming params if !ok { w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusBadRequest) str := `{"Result":"","Error":"No valide Var"}` fmt.Fprint(w, str) return } // Do normal API serving })
반환 전파
ServeHTTP() 외부에서 오류가 감지되면 ServeHTTP()가 반환될 수 있도록 오류 상태가 전파되어야 합니다. 간단한 접근 방식은 내부 함수에서 오류를 반환하는 것입니다. 그러면 ServeHTTP() 메서드도 반환됩니다. 예를 들어 사용자 정의 매개변수 유형을 사용하면
type params struct { // fields for your params } func decodeParams(r *http.Request) (*params, error) { p := new(params) // decode params; if they are invalid, return an error: if !ok { return nil, errors.New("Invalid params") } // If everything goes well: 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 } // Do normal API serving })
이러한 접근 방식을 활용하면 HTTP 요청을 효과적으로 종료하고 필요할 때 의미 있는 오류 메시지를 반환할 수 있으므로 API 서비스가 잘못된 입력을 정상적으로 처리하고 오류 조건을 전달할 수 있습니다. 의도대로.
위 내용은 Go HTTP 요청 처리에서 오류를 적절하게 처리하고 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!