@apicase/adapter-fetch
Fetch adapter for @apicase/core
Installation
- Install via NPM
npm install @apicase/adapter-fetch
- Import it
import { apicase } from '@apicase/core'
import fetch from '@apicase/adapter-fetch'
const fetchAPI = apicase(fetch)
We use node-fetch as polyfill for Node.js
Basic usage
const req = await fetchAPI({
url: '/api/posts',
headers: { token: 'my_secret_token' },
query: { userId: 1 }
})
console.log(req.success)
console.log(req.result)
Features
Url params
Fetch adapter has path-to-regexp to pass urls params smarter.
Params are stored in params
property
fetchAPI({
url: '/api/posts/:id',
params: { id: 1 }
})
Query params
You can define query params in query
property
fetchAPI({
url: '/api/posts',
query: { userId: 1 }
})
Status validation
If you have some specific API, you can define custom status validation
fetchAPI({
url: '/api/posts',
validateStatus: status => status === 200
})
Default status validation behaviour is:
function(status) {
return status >= 200 && status < 300
}
Url concatenation in services
Extended services will have concatenated URI, if the next part doesn't start with /
:
const service1 = new ApiService(fetch, { url: '/api' })
const service2 = service1.extend({ url: 'posts' })
const service3 = service1.extend({ url: '/posts' })
Full payload params list
{
"url": String,
"parser": String,
"method": String,
"headers": Object,
"body": Object|FormData,
"credentials": String,
"params": Object,
"query": Object,
"validateStatus": Function
}
Author
Anton Kosykh
License
MIT