HTTP-вызов завершается успешно (вызов поступил на сервер, и ответ вернулся), поэтому err
равен nil
.Просто код состояния HTTP не http.StatusOK
(но, судя по документу с ответом, он http.StatusNotFound
).
Вы должны проверить код состояния HTTP следующим образом:
response, err := client.Do(request)
if err != nil {
fmt.Println("HTTP call failed:", err)
return
}
// Don't forget, you're expected to close response body even if you don't want to read it.
defer response.Body.close()
if response.StatusCode != http.StatusOK {
fmt.Println("Non-OK HTTP status:", response.StatusCode)
// You may read / inspect response body
return
}
// All is OK, server reported success.
Также обратите внимание, что некоторые конечные точки API могут возвращаться, отличные от http.StatusOK
, например, HTTP 201 - Created
, или HTTP 202 - Accepted
и т. Д. Если вы хотите проверить все коды статуса успеха, вы можете сделать это следующим образом:
// Success is indicated with 2xx status codes:
statusOK := response.StatusCode >= 200 && response.StatusCode < 300
if !statusOK {
fmt.Println("Non-OK HTTP status:", response.StatusCode)
// You may read / inspect response body
return
}