Web.Contents
を使用した状態コードの処理
Web.Contents
関数には、特定の HTTP 状態コードを処理するための搭載機能がいくつか用意されています。 既定の動作は、オプション レコードの ManualStatusHandling
フィールドを使用して、拡張機能でオーバーライドできます。
自動再試行
Web.Contents
によって、次のいずれかの状態コードで失敗した要求が自動的に再試行されます。
コード | Status |
---|---|
408 | Request Timeout |
429 | 要求が多すぎます |
503 | サービス利用不可 |
504 | ゲートウェイのタイムアウト |
509 | 帯域幅制限超過 |
要求は、失敗する前に最大 3 回再試行されます。 応答に Retry-after
ヘッダーが含まれない限り、エンジンによってエクスポネンシャル バックオフ アルゴリズムが使用され、次の再試行までの待機時間が決定されます。 ヘッダーが見つかると、エンジンは次の再試行までの指定された秒数だけ待機します。 サポートされる最小待機時間は 0.5 秒で、最大値は 120 秒です。
Note
Retry-after
値は delta-seconds
形式である必要があります。 HTTP-date
形式は現在、サポートされていません。
認証の例外
次の状態コードは資格情報の例外となり、ユーザーに資格情報の提供 (OAuth トークンの有効期限が切れている場合は再度サインイン) を求める認証プロンプトが表示されます。
コード | Status |
---|---|
401 | 権限がありません |
403 | 許可されていません |
Note
拡張機能は状態コード 401 および 403 の ManualStatusHandling
オプションを使用できますが、これはカスタム データ コネクタの外部で (つまり、Power Query から直接) 行われる Web.Contents
呼び出しでは実行できません。
リダイレクト
次の状態コードでは、Location
ヘッダーで指定された URI に自動的にリダイレクトされます。 Location
ヘッダーが欠落していると、エラーが発生します。
コード | Status |
---|---|
300 | 複数選択 |
301 | Moved Permanently |
302 | Found |
303 | 他を参照 |
307 | Temporary Redirect |
Note
状態コード 307 のみが POST
要求メソッドを保持します。 その他のすべてのリダイレクト状態コードは、GET
に切り替わります。