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に切り替わります。