Golang での HTTP エラーの処理は、クライアント リクエストのさまざまなエラー条件に適切に応答するために重要です。エラーを処理するにはいくつかの方法があります。 組み込みのエラー タイプ (例: ErrBadRequest) を使用して、一般的な HTTP エラーを表します。カスタム エラー条件を処理するカスタム エラー タイプを作成します。 httputil.NewError 関数を使用して、ステータス コードとメッセージに基づいて新しいエラーを作成します。

Golang で HTTP エラーを処理するにはどうすればよいですか?
Golang での HTTP エラーの処理は、クライアント リクエストのさまざまなエラー条件に適切に応答できるため、非常に重要です。 Golang には、組み込みの errors
パッケージなど、エラーを処理するいくつかの方法が用意されています。 errors
包。
使用内置错误类型
Golang 提供了几个内置的错误类型来表示常见的 HTTP 错误,例如:
1 2 3 4 5 6 7 8 9 | import "net/http"
var (
ErrBadRequest = http.StatusBadRequest
ErrUnauthorized = http.StatusUnauthorized
ErrForbidden = http.StatusForbidden
ErrNotFound = http.StatusNotFound
ErrMethodNotAllowed = http.StatusMethodNotAllowed
)
|
ログイン後にコピー
这些错误类型可以用来返回给客户端,表示特定的错误情况。
使用自定义错误类型
如果你需要处理自定义的错误情况,你可以创建自己的错误类型:
1 2 3 4 5 6 7 8 | type MyError struct {
code int
message string
}
func (e *MyError) Error() string {
return fmt.Sprintf( "code: %d, message: %s" , e.code, e.message)
}
|
ログイン後にコピー
然后你可以在处理函数中返回这个自定义错误:
1 2 3 4 5 6 7 8 | 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
組み込みエラー タイプを使用する
Golang には、一般的な HTTP エラーを表すために、次のような組み込みエラー タイプがいくつか用意されています。
1 | err := httputil.NewError(http.StatusBadRequest, "Bad Request" )
|
ログイン後にコピー
これらのエラー タイプは、特定のエラー状態を表すためにクライアントに返すために使用できます。 カスタム エラー タイプを使用する
カスタム エラー条件を処理する必要がある場合は、独自のエラー タイプを作成できます:
1 2 3 4 5 6 7 8 9 10 | func HandleRequest(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET" :
case "POST" :
default :
http.Error(w, "Method Not Allowed" , http.StatusMethodNotAllowed)
}
}
|
ログイン後にコピー
その後、ハンドラー関数でこのカスタム エラーを返すことができます: 🎜
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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
}
}
|
ログイン後にコピー
🎜
httputil を使用します。 NewError
🎜🎜
net/http/httputil
パッケージは、指定されたステータス コードとエラー メッセージに基づいて新しい
を作成できる <code>NewError
関数を提供します。 code>error: 🎜rrreee🎜実際的なケース🎜🎜🎜例 1: 組み込みエラー タイプの使用🎜🎜rrreee🎜🎜例 2: カスタム エラー タイプの使用🎜🎜🎜
以上がGolang で HTTP エラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。