@grund/fetch v0.0.85
@grund/fetch
The purpose of this package is twofolded:
- Create a common interface for other grund packages to use.
- Intercept and throw enhanced errors (from
@grund/errors
)
Error intercepting
Using the fetch API can be a bit tricky and hard to understand - especially in the context of errors. So we created this wrapper around the fetch
function which acts in exactly the same way as a normal fetch does - but throws a set of enhanced errors (from @grund/errors
). These errors are the following:
ConnectionError
- If the native fetch function throws an error and the user is not connected to the internet (using the packageis-online
).ServerUnavailableError
- If the native fetch function throws an error and the user is online, indicating that the server is unavailable in some way.BadRequestError
- The fetch got a result on the request, but the status code was400
.AuthenticationError
- The status was401
.ForbiddenError
- The status was403
.UrlNotFoundError
- The status was404
.
401 status
The http error with code 401
has the name Unauthorized
which essentially means the same as the name for 403
- Forbidden
.
Quick recap:
authentication
- Find out if you are who you say you are.authorization
- I know who you are, but are you allowed to do what you want do to?
According to https://stackoverflow.com/questions/3297048/403-forbidden-vs-401-unauthorized-http-responses, the name Unauthorized
is a but unfortunate since what it means in practise in that you aren't authenticated. This is why this package throws an AuthenticationError
when it receives the code 401
.
Native fetch
fetch
is built into all modern web browsers, but not in NodeJS. So when we want to use this package in a node environment we need to tell it to use a specific fetch instance.
To fix this the package exposes setNativeFetch
. So in you initiation module in your application, make sure to set your native fetch instance with this function. Examples:
// NodeJS
import fetch from 'node-fetch';
import { setNativeFetch } from '@grund/fetch';
setNativeFetch(fetch);
// Browser
import { setNativeFetch } from '@grund/fetch';
setNativeFetch(window.fetch);
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago