fetchy is a very opinionated minimal wrapper around window.fetch.
- Fetchy is meant for side-projects where
window.fetchfeels low-level. Instead of always writing the same abstractions overwindow.fetch, this library can be used. - The surface area of the library is intentionally very small. This is not meant for huge projects with many developers.
npm
npm install @alivenotions/fetchy
yarn
yarn add @alivenotions/fetchy
HTTP methods
import fetchy from '@alivenotions/fetchy'
const url = `http://localhost/home`
const response = await fetchy.get(url).json()
await fetchy.post(url, { user: { id: 2 } }, { credentials: include })Timeouts
import fetchy from '@alivenotions/fetchy'
const url = `http://localhost/home`
try {
const response = await fetchy.get(url, {}, 3000).json()
} catch (e) {
if (e.name === 'TimeoutError') {
}
}Global configuration
import { createFetchyConfiguration } from '@alivenotions/fetchy'
const fetchy = createFetchyConfiguration({
baseResource: 'http://localhost/',
interceptors: (url, init) => {
console.log(`sent a request to ${url} at ${Date.now}`)
},
init: {
headers: {
'Content-Type': 'application/json',
},
mode: 'same-origin',
},
})
const response = await fetchy.get('home')- All the HTTP request methods are available on the top level.
- Non 2xx status codes error out.
- JSON body can be passed as the second argument for
post,put,deleteandpatch. It will automatically be passed throughJSON.stringify. I mostly find myself working with JSON hence the preference.getandheaddon't have this argument. - Regular init can be passed as the third argument to
post,put,deleteandheadmethods. - Helper methods to transform body data like
json,textetc. are available on the top-level promise to save another.then()chain or anotherawait. - The first argument for all methods is
resource/url. Currently it's always a string. In the future, we can probably accomodate theRequestobject too. - A central configuration object is also available that allows for configuring http call interceptions, base urls, and option defaults.
- Add retries
Will probably stop after this, as there are already many libraries that fulfill many more requirements and are far less opinionated.