首頁 >後端開發 >Golang >在 Golang 中如何驗證 HTTP 回應狀態碼?

在 Golang 中如何驗證 HTTP 回應狀態碼?

WBOY
WBOY原創
2024-06-05 20:28:00957瀏覽

在 Golang 中驗證 HTTP 回應狀態碼的方法有:使用 http.Response.StatusCode,直接比較回應狀態碼與預期值。建立自訂錯誤類型,包含狀態碼和錯誤訊息,並透過擷取錯誤來驗證狀態碼。

在 Golang 中如何验证 HTTP 响应状态代码?

如何在Golang 中驗證HTTP 回應狀態碼

在Golang 中使用net/http 套件發送HTTP 請求時,驗證回應狀態碼非常重要。這有助於處理伺服器端錯誤、設定問題和其他網路問題。

使用http.Response.StatusCode

http.Response 類型包含一個StatusCode 字段,表示HTTP 回應的狀態碼。要驗證狀態代碼,可以簡單地比較StatusCode 與預期的值:

package main

import (
  "fmt"
  "net/http"
  "net/http/httptest"
)

func main() {
  // 创建一个模拟响应
  resp := httptest.NewRecorder()

  // 设置状态代码
  resp.WriteHeader(http.StatusOK)

  if resp.Code == http.StatusOK {
    fmt.Println("成功")
  }
}

使用自訂錯誤類型

另一種驗證回應狀態代碼的方法是建立一個自訂錯誤類型,其中包含狀態代碼和錯誤訊息:

package main

import (
  "errors"
  "fmt"
  "net/http"
)

type HTTPError struct {
  Code int
  Msg  string
}

func (e HTTPError) Error() string {
  return fmt.Sprintf("HTTP Error: %d - %s", e.Code, e.Msg)
}

func main() {
  // 发送请求并捕获响应
  resp, err := http.Get("https://example.com")
  if err != nil {
    fmt.Println(err)
    return
  }

  if resp.StatusCode != http.StatusOK {
    // 创建自定义错误
    err = HTTPError{Code: resp.StatusCode, Msg: "请求失败"}
    fmt.Println(err)
  }
}

#實戰案例

以下是使用http.Response .StatusCode 驗證狀態碼的實戰案例:

假設你正在開發一個API,該API 使用HTTP GET 從資料庫中檢索資料。你需要驗證回應的狀態代碼以確保請求成功完成:

func GetUserData(userID int) (UserData, error) {
  resp, err := http.Get(fmt.Sprintf("https://myapi.com/users/%d", userID))
  if err != nil {
    return UserData{}, err
  }

  if resp.StatusCode != http.StatusOK {
    return UserData{}, fmt.Errorf("请求失败: %d", resp.StatusCode)
  }

  // 解析响应并返回数据
}

透過驗證回應狀態碼,你可以確保只有在伺服器成功處理請求時才傳回資料。

以上是在 Golang 中如何驗證 HTTP 回應狀態碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn