Web.Contents を使用して状態コードを処理する

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

自動再試行

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

Code ステータス
408 要求タイムアウト
429 要求が多すぎます
503 サービス利用不可
504 ゲートウェイのタイムアウト
509 帯域幅の制限を超えました

この関数は、失敗する前に最大 3 回要求を再試行します。 エンジンは、指数バックオフ アルゴリズムを使用して、応答に Retry-after ヘッダーが含まれている場合を除き、次の再試行まで待機する時間を決定します。 ヘッダーが見つかると、エンジンは、次の再試行の前に、指定された秒数待機します。 サポートされる最小待機時間は 0.5 秒で、最大値は 120 秒です。

注

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

認証の例外

次の状態コードでは、資格情報の例外が発生します。 例外は、OAuth トークンの有効期限が切れた場合に資格情報を入力するか、もう一度サインインするようにユーザーに求めます。

Code ステータス
401 無許可
4:03 許可されていません

注

拡張機能では、状態コード 401 と 403 で ManualStatusHandling オプションを使用できます。 このオプションは、(つまり、Power Queryから直接) カスタム データ コネクタの外部で行われたWeb.Contents呼び出しでは使用できません。

Redirection

次の状態コードにより、 Location ヘッダーで指定された URI に自動的にリダイレクトされます。 ヘッダー Location 不足すると、エラーが発生します。

Code ステータス
300 複数の選択肢
301 恒久的に移動しました
302 見つかりました
303 その他を参照
307 一時的なリダイレクト

注

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