Maison > Article > développement back-end > Comment gérer les erreurs HTTP dans Golang ?
La gestion des erreurs HTTP dans Golang est cruciale afin de répondre avec élégance aux diverses conditions d'erreur dans les requêtes des clients. Il existe plusieurs manières de gérer les erreurs : Utilisez des types d'erreur intégrés (par exemple : ErrBadRequest) pour représenter les erreurs HTTP courantes. Créez des types d'erreur personnalisés pour gérer les conditions d'erreur personnalisées. Utilisez la fonction httputil.NewError pour créer une nouvelle erreur basée sur le code d'état et le message.
La gestion des erreurs HTTP dans Golang est très importante car elle vous permet de répondre avec élégance à diverses conditions d'erreur dans les requêtes des clients. Golang propose plusieurs façons de gérer les erreurs, y compris le package erreurs
intégré. errors
包。
Golang 提供了几个内置的错误类型来表示常见的 HTTP 错误,例如:
import "net/http" var ( ErrBadRequest = http.StatusBadRequest ErrUnauthorized = http.StatusUnauthorized ErrForbidden = http.StatusForbidden ErrNotFound = http.StatusNotFound ErrMethodNotAllowed = http.StatusMethodNotAllowed )
这些错误类型可以用来返回给客户端,表示特定的错误情况。
如果你需要处理自定义的错误情况,你可以创建自己的错误类型:
type MyError struct { code int message string } func (e *MyError) Error() string { return fmt.Sprintf("code: %d, message: %s", e.code, e.message) }
然后你可以在处理函数中返回这个自定义错误:
func HandleRequest(w http.ResponseWriter, r *http.Request) { if err := validateRequest(r); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } // ... 继续处理请求 }
httputil.NewError
net/http/httputil
包提供了 NewError
函数,它可以根据给定的状态码和错误消息创建一个新的 error
err := httputil.NewError(http.StatusBadRequest, "Bad Request")Ces types d'erreur peuvent être utilisés pour revenir au client pour représenter des conditions d'erreur spécifiques. Utilisez un type d'erreur personnalisé
Si vous devez gérer des conditions d'erreur personnalisées, vous pouvez créer votre propre type d'erreur :
func HandleRequest(w http.ResponseWriter, r *http.Request) { switch r.Method { case "GET": // ... 处理 GET 请求 case "POST": // ... 处理 POST 请求 default: http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed) } }Ensuite, vous pouvez renvoyer cette erreur personnalisée dans la fonction de gestionnaire : 🎜
type InvalidRequestError struct { message string } func (e InvalidRequestError) Error() string { return fmt.Sprintf("invalid request: %s", e.message) } func HandleRequest(w http.ResponseWriter, r *http.Request) { if err := validateRequest(r); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } // ... 继续处理请求 }🎜Utilisez
httputil. Le package NewError
🎜🎜net/http/httputil
fournit la fonction NewError
, qui peut créer un nouveau basé sur le code d'état et le message d'erreur donnés. code>erreur
: 🎜rrreee🎜Cas pratique🎜🎜🎜Exemple 1 : Utiliser des types d'erreur intégrés🎜🎜rrreee🎜🎜Exemple 2 : Utiliser des types d'erreur personnalisés🎜🎜rrreeeCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!