Web.Contents を使用した状態コードの処理

Web.Contents 関数には、特定の HTTP 状態コードを処理するための組み込み機能がいくつか用意されています。 既定の動作は、オプション レコードManualStatusHandling フィールドを使用して、拡張機能でオーバーライドできます。

自動再試行

Web.Contents によって、次のいずれかの状態コードで失敗した要求が自動的に再試行されます。

コード Status
408 要求タイムアウト
429 要求が多すぎます
503 サービス利用不可
504 ゲートウェイ タイムアウト
509 帯域幅制限超過

要求は、失敗するまで最大 3 回再試行されます。 応答に Retry-after ヘッダーが含まれない限り、エンジンによってエクスポネンシャル バックオフ アルゴリズムが使用され、次の再試行までの待機時間が決定されます。 ヘッダーが見つかると、エンジンは次の再試行までの指定された秒数だけ待機します。 サポートされる最小待機時間は 0.5 秒で、最大値は 120 秒です。

注意

Retry-after 値は delta-seconds 形式である必要があります。 HTTP-date 形式は現在、サポートされていません。

認証の例外

次の状態コードは、資格情報の例外が発生し、ユーザーに資格情報の入力 (または、有効期限が切れた OAuth トークンの場合は再ログイン) を求める認証プロンプトが表示されます。

コード Status
401 権限がありません
403 Forbidden

注意

拡張機能は、状態コード 401 および 403 で ManualStatusHandling オプションを使用できます。これは、拡張コンテキストの外部で行われた Web.Contents 呼び出し (つまり、Power Query から直接) で行うことができるものではありません。

リダイレクト

次の状態コードを実行すると、Location ヘッダーに指定されている URI に自動的にリダイレクトされます。 Location ヘッダーが欠落していると、エラーが発生します。

コード Status
300 複数の選択肢
301 Moved Permanently
302 Found
303 その他を参照
307 Temporary Redirect

注意

状態コード 307 のみが POST 要求メソッドを保持します。 その他のすべてのリダイレクト状態コードは、GET に切り替わります。