HTTPエラー処理
HTTPコネクターは、リクエストが失敗したときに問題を特定、管理、解決するのに役立つ充実したエラーデータを提示します。 HTTPステータス、標準化されたエラーメッセージ、およびヘッダーや本文などの構造化されたレスポンス詳細を表示します。 これらの詳細により、明確性が向上し、自動化がサポートされます。 この機能は現在、HTTPコネクターに適用されます。
エラーメッセージの表示方法
Send requestアクションが非2xxレスポンスを受信すると、コネクターはエラーを発生させます。
ジョブレポートのErrorタブには、以下が表示されます:
- 構造化されたエラーメッセージ
- HTTPレスポンスステータス
- レスポンスヘッダー
- レスポンス本文(該当する場合)
各値は専用フィールドに表示されます。 これらは、Monitorブロック、ログ、またはその他のエラー処理ロジックで使用できます。
MonitorおよびOn errorブロック用のHTTPコネクターエラーデータピル。
エラー構造
HTTPコネクターは、ジョブエラーに以下のフィールドを含めます:
| フィールド | 説明 |
|---|---|
error_type_id | エラータイプの安定した識別子。 例:err.http.response.client_error.not_found。 |
error_type | HTTPステータスに基づく表示名。 例: 404 Not Found。 |
error_id | エラーインスタンスの一意の識別子。 |
error_message | 高レベルのメッセージ。 例: HTTP 500 error。 |
http_response.code | 数値のHTTPステータスコード。 例: 404。 |
http_response.status_text | HTTPステータステキスト。 例:Not Found。 |
http_response.headers | HTTPレスポンスヘッダー。 |
http_response.body | 文字列としてのHTTPレスポンス本文。 |
エラーテキストの解析を避ける
自動化のためにerror_messageまたはerror_type値を解析することは避けてください。 これらのフィールドは表示値であり、変更される可能性があります。
信頼性の高いプログラムによるチェックには、error_type_idまたはhttp_response.codeを使用します。 error_type_idフィールドは、Workatoのエラー分類に準拠した安定した識別子を提供します。
HTTPエラーカテゴリー
HTTPコネクターは、非2xxレスポンスに対してエラーを発生させます。 これには、3xx HTTPリダイレクトエラー、4xxクライアントエラー、および5xxサーバーエラーが含まれます。
コネクターによって返されるHTTPエラーは、HTTPステータスコードクラスに基づく構造化されたerror_type_idパターンに従います。 HTTPエラータイプIDのこの構造化カタログは、現在HTTPコネクターでのみサポートされています。
| HTTPステータスクラス | error_type_idプレフィックス | 説明 |
|---|---|---|
| 3xx | err.http.response.redirection.* | 301 Moved Permanently、302 Found、304 Not Modifiedなどのリダイレクトレスポンス。 |
| 4xx | err.http.response.client_error.* | 400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Foundなどのクライアント側エラー。 |
| 5xx | err.http.response.server_error.* | 500 Internal Server Error、502 Bad Gateway、503 Service Unavailableなどのサーバー側エラー。 |
MonitorまたはOn errorブロックでerror_type_idプレフィックスを使用して、関連するHTTP失敗をグループ化できます。
Retry succeeds列は、レシピがパラメーターを変更せずに同じリクエストを再試行した場合に成功する可能性があるかどうかを示します。 これは、このセクションの以下の表に適用されます。
HTTPリダイレクトエラータイプID
HTTPコネクターは、HTTP 3xxレスポンスに対して以下のerror_type_id値を返します:
| HTTPステータス | error_type_id | 再試行成功 |
|---|---|---|
| 300 Multiple Choices | err.http.response.redirection.multiple_choices | いいえ |
| 301 Moved Permanently | err.http.response.redirection.moved_permanently | いいえ |
| 302 Found | err.http.response.redirection.found | いいえ |
| 303 See Other | err.http.response.redirection.see_other | いいえ |
| 304 Not Modified | err.http.response.redirection.not_modified | いいえ |
| 305 Use Proxy | err.http.response.redirection.use_proxy | いいえ |
| 306 Unused | err.http.response.redirection.unused | いいえ |
| 307 Temporary Redirect | err.http.response.redirection.temporary_redirect | いいえ |
| 308 Permanent Redirect | err.http.response.redirection.permanent_redirect | いいえ |
HTTPクライアントエラータイプID
HTTPコネクターは、HTTP 4xxレスポンスに対して以下のerror_type_id値を返します:
| HTTPステータス | error_type_id | 再試行成功 |
|---|---|---|
| 400 Bad Request | err.http.response.client_error.bad_request | いいえ |
| 401 Unauthorized | err.http.response.client_error.unauthorized | いいえ |
| 402 Payment Required | err.http.response.client_error.payment_required | いいえ |
| 403 Forbidden | err.http.response.client_error.forbidden | いいえ |
| 404 Not Found | err.http.response.client_error.not_found | いいえ |
| 405 Method Not Allowed | err.http.response.client_error.method_not_allowed | いいえ |
| 406 Not Acceptable | err.http.response.client_error.not_acceptable | いいえ |
| 407 Proxy Authentication Required | err.http.response.client_error.proxy_authentication_required | いいえ |
| 408 Request Timeout | err.http.response.client_error.request_timeout | はい |
| 409 Conflict | err.http.response.client_error.conflict | いいえ |
| 410 Gone | err.http.response.client_error.gone | いいえ |
| 411 Length Required | err.http.response.client_error.length_required | いいえ |
| 412 Precondition Failed | err.http.response.client_error.precondition_failed | いいえ |
| 413 Content Too Large | err.http.response.client_error.content_too_large | いいえ |
| 414 URI Too Long | err.http.response.client_error.uri_too_long | いいえ |
| 415 Unsupported Media Type | err.http.response.client_error.unsupported_media_type | いいえ |
| 416 Range Not Satisfiable | err.http.response.client_error.range_not_satisfiable | いいえ |
| 417 Expectation Failed | err.http.response.client_error.expectation_failed | いいえ |
| 418 I'm a teapot | err.http.response.client_error.i_m_a_teapot | いいえ |
| 421 Misdirected Request | err.http.response.client_error.misdirected_request | いいえ |
| 422 Unprocessable Content | err.http.response.client_error.unprocessable_content | いいえ |
| 423 Locked | err.http.response.client_error.locked | はい |
| 424 Failed Dependency | err.http.response.client_error.failed_dependency | いいえ |
| 425 Too Early | err.http.response.client_error.too_early | はい |
| 426 Upgrade Required | err.http.response.client_error.upgrade_required | いいえ |
| 428 Precondition Required | err.http.response.client_error.precondition_required | いいえ |
| 429 Too Many Requests | err.http.response.client_error.too_many_requests | はい |
| 431 Request Header Fields Too Large | err.http.response.client_error.request_header_fields_too_large | いいえ |
| 451 Unavailable For Legal Reasons | err.http.response.client_error.unavailable_for_legal_reasons | いいえ |
HTTPサーバーエラータイプID
HTTPコネクターは、HTTP 5xxレスポンスに対して以下のerror_type_id値を返します:
| HTTPステータス | error_type_id | 再試行成功 |
|---|---|---|
| 500 Internal Server Error | err.http.response.server_error.internal_server_error | はい |
| 501 Not Implemented | err.http.response.server_error.not_implemented | いいえ |
| 502 Bad Gateway | err.http.response.server_error.bad_gateway | はい |
| 503 Service Unavailable | err.http.response.server_error.service_unavailable | はい |
| 504 Gateway Timeout | err.http.response.server_error.gateway_timeout | はい |
| 505 HTTP Version Not Supported | err.http.response.server_error.http_version_not_supported | いいえ |
| 506 Variant Also Negotiates | err.http.response.server_error.variant_also_negotiates | いいえ |
| 507 Insufficient Storage | err.http.response.server_error.insufficient_storage | はい |
| 508 Loop Detected | err.http.response.server_error.loop_detected | いいえ |
| 510 Not Extended | err.http.response.server_error.not_extended | いいえ |
| 511 Network Authentication Required | err.http.response.server_error.network_authentication_required | いいえ |
エラーとして扱われる成功HTTPレスポンスコード
HTTPコネクターは、下位互換性のために、特定の成功HTTPレスポンスをエラーとして扱う場合があります。
これらのレスポンスは成功HTTPステータスコードを使用しますが、HTTPコネクターではエラーとして表示される場合があります。
| HTTPステータス | error_type_id |
|---|---|
| 208 Already Reported | err.http.response.successful.already_reported |
| 226 IM Used | err.http.response.successful.im_used |
サポートされていないRFC HTTPレスポンスコード
HTTPコネクターは、サポートされているRFC定義のレスポンスコードにマッピングされないHTTPステータスコードを受信すると、フォールバックerror_type_id値を返す場合があります。 これらの識別子は、サポートされていない、または非標準のHTTPレスポンスコードを表します:
| カテゴリ | error_type_id |
|---|---|
| 情報(1xx) | err.http.response.unsupported_rfc.informational |
| 成功(2xx) | err.http.response.unsupported_rfc.successful |
| リダイレクト(3xx) | err.http.response.unsupported_rfc.redirection |
| クライアントエラー(4xx) | err.http.response.unsupported_rfc.client_error |
| サーバーエラー(5xx) | err.http.response.unsupported_rfc.server_error |
| 一般 | err.http.response.unsupported_rfc.general |
構造化されたHTTPエラー出力
HTTPコネクターは、デバッグ、フィルタリング、自動化に使用できる構造化されたエラーオブジェクトを返します。 このオブジェクトには、HTTPステータスコード、レスポンス本文、ヘッダー、機械可読なエラータイプIDなどのフィールドが含まれます。 例:
{
"error_type_id": "err.http.response.client_error.not_found",
"error_type": "Not Found",
"error_id": "ad6a...b3c",
"error_message": "HTTP 404 error",
"http_response": {
"code": 404,
"status_text": "Not Found",
"body": "{\"error\": \"Resource not found\"}",
"headers": {
"Content-Type": "application/json"
}
}
}この構造化されたエラーデータには、以下からアクセスできます:
- ジョブレポート
- Monitorブロック(エラーデータピル)
- On errorブロック(エラーデータピル)
Workatoでは、自動化にerror_type_idを使用することを推奨しています。 このフィールドは安定しており、信頼性の高いプログラムによるチェックをサポートします。
エラー処理のベストプラクティス
信頼性の高いレシピを構築するには、MonitorまたはOn errorブロックでerror_type_idおよびhttp_responseフィールドを使用します:
error_type_idを使用して特定のエラーをキャッチして処理- HTTPステータスコードまたはレスポンスヘッダーに基づいてリクエストを再試行
- 構造化されたエラーデータをログまたはアラートシステムに送信
これらのフィールドにより、文字列解析や壊れやすいパターンマッチングが不要になります。
Last updated: