@apicase/adapter-fetch
Fetch adapter for Apicase
Last updated a year ago by kelin2025 .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @apicase/adapter-fetch 
SYNC missed versions from official npm registry.

@apicase/adapter-fetch

Fetch adapter for @apicase/core

Installation

  1. Install via NPM
npm install @apicase/adapter-fetch
  1. 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 }
})

// Whether request was succeed or failed
console.log(req.success)

// Fetch result (with response body, headers etc)
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 }
})
// => GET /api/posts/1

Query params

You can define query params in query property

fetchAPI({
  url: '/api/posts',
  query: { userId: 1 }
})
// => GET /api/posts?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' })

// { "url": "/api/posts" }
const service2 = service1.extend({ url: 'posts' })

// { "url": "/posts" }
const service3 = service1.extend({ url: '/posts' })

Full payload params list

{
  // Request URL
  "url": String,
  // Response parser
  // default: 'json'
  "parser": String,
  // Request method
  // default: 'GET'
  "method": String,
  // Request headers
  // default: {}
  "headers": Object,
  // Request body
  // default: undefined
  "body": Object|FormData,
  // Credentials
  // default: 'omit'
  "credentials": String,
  // URL params
  // default: {}
  "params": Object,
  // Query params
  // default: {}
  "query": Object,
  // Status validation callback
  // default: status => status >= 200 && status < 300
  "validateStatus": Function
}

Author

Anton Kosykh

License

MIT

Current Tags

  • 0.15.1                                ...           latest (a year ago)

22 Versions

  • 0.15.1                                ...           a year ago
  • 0.15.0                                ...           a year ago
  • 0.14.5                                ...           a year ago
  • 0.14.4                                ...           a year ago
  • 0.14.3                                ...           a year ago
  • 0.14.2                                ...           a year ago
  • 0.14.1                                ...           a year ago
  • 0.14.0                                ...           a year ago
  • 0.13.0                                ...           a year ago
  • 0.12.0                                ...           a year ago
  • 0.11.0-beta.1                                ...           a year ago
  • 0.10.0                                ...           a year ago
  • 0.9.0                                ...           a year ago
  • 0.8.0                                ...           a year ago
  • 0.7.1                                ...           a year ago
  • 0.7.0                                ...           a year ago
  • 0.6.0                                ...           a year ago
  • 0.5.0                                ...           a year ago
  • 0.4.0                                ...           a year ago
  • 0.3.2                                ...           a year ago
  • 0.3.1                                ...           a year ago
  • 0.3.0                                ...           2 years ago
Maintainers (1)
Downloads
Today 0
This Week 22
This Month 66
Last Day 0
Last Week 22
Last Month 46
Dependencies (3)
Dev Dependencies (8)
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |