<p>axiosは有効なHTTP応答をスローしないでください</p>

作成日 2016年10月09日  ·  3コメント  ·  ソース: axios/axios

axiosがstatus < 200 || status >= 300スローするのはなぜですか? defaults.js#L84を参照してください
HTTPエラー500は、サーバーに到達し、httpプロトコルを使用して有効な応答を取得したことを意味します。

アプリケーションの観点からは、HTTPエラー500は例外と見なされる場合がありますが、これは異なる抽象化レベルであり、HTTP抽象化とはまったく関係ありません。

今後のフェッチ仕様との上位互換性を保つために、有効なHTTP応答の場合にaxiosがスローしないことが重要だと思います。

フェッチ仕様ではresponse.okプロパティが指定されているため、アプリケーション開発者はHTTP操作の結果を簡単に識別できます。同様のアプローチが、axiosにも役立つと思います。

フェッチ仕様の詳細については、こちらをご覧ください。
https://fetch.spec.whatwg.org/#dom -response-ok
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

最も参考になるコメント

正解ですが、私のポイントは、これがデフォルトであってはならないということです。 実際、これは構成可能であってはなりません。

全てのコメント3件

サーバーの応答がある場合は、validateStatusconfigオプションを使用して常に解決できると思います。 ドキュメントから:

// `validateStatus` defines whether to resolve or reject the promise for a given
// HTTP response status code. If `validateStatus` returns `true` (or is set to `null`
// or `undefined`), the promise will be resolved; otherwise, the promise will be
// rejected.
validateStatus: function (status) {
  return status >= 200 && status < 300; // default
}

正解ですが、私のポイントは、これがデフォルトであってはならないということです。 実際、これは構成可能であってはなりません。

私たちはあなたの懸念を理解していますが、Axiosはfetchを置き換えることも、その動作を模倣することも意味しません。 呼び出しを行うためのアダプターとしても使用しません(現時点ではXHRに固執しています)。

Axiosは、ほとんどの人が使用するデフォルトを提供して、可能な限り構成可能にしようとします。 この場合、人々はサーバーからの応答の直後にステータスコードを確認する傾向があります。 例えば:

fetch(url).then(verifyStatus).then(...);

そのため、 fetch-check-http-statusのようなパッケージが存在します。

頻繁に繰り返される構造は避けたいと思います。 サーバーからの有効な応答で解決したい場合は、いつでもvalidateStatus: false設定できます。

このページは役に立ちましたか?
0 / 5 - 0 評価