Bagaimana untuk mengesahkan kod status respons HTTP di Golang?

WBOY
Lepaskan: 2024-06-05 20:28:00
asal
895 orang telah melayarinya

Kaedah untuk mengesahkan kod status respons HTTP di Golang ialah: gunakan http.Response.StatusCode untuk membandingkan terus kod status respons dengan nilai yang dijangkakan. Buat jenis ralat tersuai yang mengandungi kod status dan mesej ralat, dan sahkan kod status dengan menangkap ralat.

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

Cara mengesahkan kod status respons HTTP di Golang

Apabila menghantar permintaan HTTP menggunakan pakej net/http di Golang, adalah sangat penting untuk mengesahkan kod status respons. Ini membantu menangani ralat sebelah pelayan, isu konfigurasi dan isu rangkaian lain. 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("成功")
  }
}
Salin selepas log masuk

使用自定义错误类型

另一种验证响应状态代码的方法是创建一个自定义错误类型,其中包含状态代码和错误消息:

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)
  }
}
Salin selepas log masuk

实战案例

以下是使用 http.Response.StatusCode

Gunakan http.Response.StatusCode

Jenis http.Response mengandungi medan StatusCode yang mewakili kod status HTTP tindak balas. Untuk mengesahkan kod status, anda hanya boleh membandingkan StatusCode dengan nilai yang dijangkakan: 🎜
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)
  }

  // 解析响应并返回数据
}
Salin selepas log masuk
🎜🎜Menggunakan jenis ralat tersuai 🎜🎜🎜Cara lain untuk mengesahkan kod status respons adalah dengan mencipta jenis ralat tersuai , yang mengandungi kod status dan mesej ralat: 🎜rrreee🎜🎜Satu kes praktikal 🎜🎜🎜Berikut ialah kes praktikal untuk menggunakan http.Response.StatusCode untuk mengesahkan kod status: 🎜🎜Andaikan anda sedang membangunkan API yang API menggunakan HTTP GET untuk mendapatkan semula data daripada pangkalan data. Anda perlu mengesahkan kod status respons untuk memastikan permintaan berjaya diselesaikan: 🎜rrreee🎜 Dengan mengesahkan kod status respons, anda memastikan data hanya dikembalikan jika pelayan berjaya memproses permintaan. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mengesahkan kod status respons HTTP di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!