Fetchasync is a lightweight package created with typescript that provides an easy way to fetch modern API using await/async.
- Uses await/async
- Has default configuration for common JSON API
- Errors 400 >= will go to the catch by default.
- Errors 200 will stay within the try.
- Created with Typescript
- Fixes common curls errors by default.
npm i fetchasync
npm update fetchasync
import { FETCHASYNC } from 'fetchasync';
- Simple get request without optional params
const getRequest = async () =>
{
try
{
let response = await FETCHASYNC.get<T>("myURL");
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- Url with params, custom headers, and custom options
const getRequest = async () =>
{
try
{
let params = {
"example": "test"
};
let headers = {
"Content-Type" : "application/json",
"Accept" : "application/json"
};
let options = {
mode: "cors",
cache: "default",
credentials: "include",
redirect: "follow",
policy: "no-referrer-when-downgrade"
}
let response = await FETCHASYNC.get<T>("myURL", params, true, headers, options);
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- To fetch an URL with params ex: http://myURL.com?example=test use the following example
let response = await FETCHASYNC.get<T>("http://myURL.com", {"example" "test"});
- URL string (required)
- Params object (optional)
- returnJson boolean (optional)
- headers object (optional)
- options object (optional)
- Simple POST request without optional params
const postRequest = async () =>
{
try
{
let body = {
example: "example"
};
let response = await FETCHASYNC.post<T>("myURL", body);
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- POST request with custom headers and custom options
const postRequest = async () =>
{
try
{
let body = {
example: "example"
};
let headers = {
"Content-Type" : "application/json",
"Accept" : "application/json"
};
let options = {
mode: "cors",
cache: "default",
credentials: "include",
redirect: "follow",
policy: "no-referrer-when-downgrade"
}
let response = await FETCHASYNC.post<T>("myURL", body, true, headers, options);
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- POST File request
const postFileRequest = async () =>
{
try
{
let formData = new FormData();
formData.append('logo', input.files[0]);
let headers = {};//Let the browser decide the headers. If you manually add the header then you will need to also handle the boundaries.
let response = await FETCHASYNC.post<T>("myURL", formData, true, headers);
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- URL string (required)
- body object (required)
- returnJson boolean (optional)
- headers object (optional)
- options object (optional)
- Simple PUT request without optional params
const putRequest = async () =>
{
try
{
let body = {
example: "example"
};
let response = await FETCHASYNC.put<T>("myURL", body);
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- PUT request with custom headers and custom options
const putRequest = async () =>
{
try
{
let body = {
example: "example"
};
let headers = {
"Content-Type" : "application/json",
"Accept" : "application/json"
};
let options = {
mode: "cors",
cache: "default",
credentials: "include",
redirect: "follow",
policy: "no-referrer-when-downgrade"
}
let response = await FETCHASYNC.put<T>("myURL", body, true, headers, options);
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- URL string (required)
- body object (required)
- returnJson boolean (optional)
- headers object (optional)
- options object (optional)
- Simple PATCH request without optional params
const patchRequest = async () =>
{
try
{
let body = {
example: "example"
};
let response = await FETCHASYNC.patch<T>("myURL", body);
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- PATCH request with custom headers and custom options
const patchRequest = async () =>
{
try
{
let body = {
example: "example"
};
let headers = {
"Content-Type" : "application/json",
"Accept" : "application/json"
};
let options = {
mode: "cors",
cache: "default",
credentials: "include",
redirect: "follow",
policy: "no-referrer-when-downgrade"
}
let response = await FETCHASYNC.patch<T>("myURL", body, true, headers, options);
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- URL string (required)
- body object (required)
- returnJson boolean (optional)
- headers object (optional)
- options object (optional)
- Simple DELETE request without optional params
const deleteRequest = async () =>
{
try
{
let response = await FETCHASYNC._delete<T>("myURL");
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- DELETE request with custom headers and custom options
const deleteRequest = async () =>
{
try
{
let headers = {
"Content-Type" : "application/json",
"Accept" : "application/json"
};
let options = {
mode: "cors",
cache: "default",
credentials: "include",
redirect: "follow",
policy: "no-referrer-when-downgrade"
}
let response = await FETCHASYNC._delete<T>("myURL", true, headers, options);
console.log(response);
}
catch(error)
{
console.log(error);
}
}
- URL string (required)
- returnJson boolean (optional)
- headers object (optional)
- options object (optional)
{
"Content-Type" : "application/json",
"Accept" : "application/json"
}
{
"mode": "cors",
"cache": "default",
"credentials": "include",
"redirect": "follow",
"policy": "no-referrer-when-downgrade"
}
await FETCHASYNC.get<MyInterface>("myURL");
- URL: This parameter is to specify the URL that will be fetched
- returnJson: This parameter is to specify if we are waiting for a JSON response or a promise. If false a promise will be returned. If true a JSON server response is expected.
- headers: This parameter is to specify the headers required to fetch the API. See Headers above, to see the default headers.
- options: This parameter is to specify the type of fetch configuration. See Options above to see the default fetch config.
Types are optionals
<T>
is optional.
This module was inspired and created by @jerryurenaa
Fetchasync is MIT licensed.