a lightweight fetch lib with middleware inspired by koa
yarn add @jarzzzi/rufetch
const http = new Rufetch({
baseURL: 'https://github.com/api',
})
const getUser = (name) => {
return http.get(`/user/${name}`)
}
const getReps = (name, page) => {
return http.get(`/user/${name}`, {params: {page}})
}
const createReps = (name, data) => {
return http.post(`/user/${name}`, {data})
}
-
built in middleware
- cache
- fetch
-
error middleware
http.use(async (ctx: any, next: any) => {
await next()
const {error} = ctx.res
if (error?.status >= 400 && error?.status < 500) {
console.error('client error')
}
if (error?.status >= 500) {
console.error('server error')
}
if (error === 'fetch timeout') {
console.error('fetch timeout')
}
})
- token middleware
http.use(async (ctx: any, next: any) => {
const token = await getToken()
ctx.req.requestInit.setHeaders(token, token)
await next()
})
- options
- baseURL
- timeout: default 15000
- params: url search params
- data: body alias
- responseType: default json, arrayBuffer, blob, json, text, formData, stream...
- cacheOptions
- cache: boolean
- expiredAge: default 5000
- body
- cache
- credentials
- headers
- integrity
- keepalive
- method
- mode
- redirect
- referrer
- referrerPolicy
- signal
- window
- new (options)
- instance.get
- instance.post
- instance.put
- instance.delete
- instance.head
- instance.use
- add middleware
- ctx
- req
- request
- res
- response