mirror of
https://github.com/bcomnes/deploy-to-neocities.git
synced 2026-01-17 15:06:29 +00:00
102 lines
2.5 KiB
Markdown
102 lines
2.5 KiB
Markdown
# fetch-errors
|
|
[](https://github.com/bcomnes/fetch-errors/actions)
|
|
[](https://github.com/standard-things/esm)
|
|
|
|
Error subclasses for Text and JSON `fetch` response bodies, and a `handleResponse` fuction to handle fetch responses cleanly.
|
|
|
|
```
|
|
npm install fetch-errors
|
|
```
|
|
|
|
## Usage
|
|
|
|
``` js
|
|
import {
|
|
HTTPError,
|
|
TextHTTPError,
|
|
JSONHTTPError,
|
|
handleResponse
|
|
} from 'fetch-errors';
|
|
|
|
window.fetch('https://api.github.com/users/bcomnes/repos')
|
|
.then(handleResponse)
|
|
.then(json => { console.log(json); })
|
|
.catch(err => {
|
|
switch (err.constructor) {
|
|
case JSONHTTPError: {
|
|
console.error(err.message);
|
|
console.error(err.status);
|
|
console.error(err.json);
|
|
console.error(err.stack);
|
|
break;
|
|
}
|
|
case TextHTTPError: {
|
|
console.error(err.message);
|
|
console.error(err.status);
|
|
console.error(err.data);
|
|
console.error(err.stack);
|
|
break;
|
|
}
|
|
case HTTPError: {
|
|
console.error(err.message);
|
|
console.error(err.status);
|
|
console.error(err.stack);
|
|
break;
|
|
}
|
|
default: {
|
|
console.error(err);
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
```
|
|
|
|
## API
|
|
|
|
### `async handleResponse(response)`
|
|
|
|
Parse JSON or text bodies of [`fetch`][fetch] [`Response`][response] objects. Intended for APIs that return JSON, but falls back to `response.text()` body reading when the `json` `Content-type` is missing. If `response.ok`, returns a JS object (if JSON), or the text content of the response body. Otherwise, returns a `JSONHTTPError` or `TextHTTPError`. If if `response.json()` or `resonse.text()` will throw their [native error]() objects.
|
|
|
|
### `class HTTPError extends Error`
|
|
|
|
Additional error properties from Error
|
|
|
|
```js
|
|
{
|
|
stack, // stack trace of error
|
|
status // status code of response
|
|
}
|
|
```
|
|
|
|
### `class TextHTTPError extends HTTPError`
|
|
|
|
Additional error properties from HTTPError
|
|
|
|
```js
|
|
{
|
|
data // data of text response
|
|
}
|
|
```
|
|
|
|
### `class JSONHTTPError extends HTTPError`
|
|
|
|
Additional error properties from HTTPError
|
|
|
|
```js
|
|
{
|
|
json // json of a JSON response
|
|
}
|
|
```
|
|
|
|
### See also
|
|
|
|
- [netlify/micro-api-client](https://github.com/netlify/micro-api-client): These errors were extracted from netlify/micro-api-client for individual use.
|
|
|
|
|
|
## License
|
|
|
|
MIT
|
|
|
|
[response]: https://developer.mozilla.org/en-US/docs/Web/API/Response
|
|
[fetch]: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
|