spec実装
spec内容
- fetch() API only rejects a promise when a “network error is encountered, although this usually means permissions issues or similar.
- ネットワークエラーなどの場合にpromiseをrejectする
- つまり、そうでないときにはokってこと
- これは重要。なぜなら400などにもエラーにならずcatchされないから
- なのでapi設計するときに
methods
response.ok
- HTTP response’s status code is in the successful range or not. For instance the following code logs “Error: Internal Server Error(…)”:
- okのstatusコードは
- https://developer.mozilla.org/en-US/docs/Web/API/Response/ok
- status in the range 200-299
if (response.status >= 200 && response.status < 300) {
errorの時の注意点
- errorの時にはbodyを取得できない!!!
- fetch apiではresponseが帰ってくるならそれはerrorではない。
- api設計のときに
- [サブスタックがFetchの仕様についてガチギレしてるのでまとめた]https://gist.github.com/yosuke-furukawa/aa39aa09edeeefa7fda4
no-corsについて
- https://developer.mozilla.org/ja/docs/Web/API/Request/mode
- https://jakearchibald.com/2015/thats-so-fetch/
//google.com
へrequestすると失敗するが、それは request, responseにcors headerがないから
corsが必要ないならno-cors
で解決できる