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