Tiny 500b fetch "barely-polyfill"
- Tiny: weighs about 500 bytes gzipped
- Minimal: just
fetch()
with headers and text/json/xml responses - Familiar: a subset of the full API
- Supported: supports IE8+ (BYOP)
- Standalone: one function, no dependencies
🤔 What's Missing?
- Uses simple Arrays instead of Iterables, since Arrays are iterables
- No streaming, just Promisifies existing XMLHttpRequest response bodies
- Bare-bones
.blob()
implementation - just proxiesxhr.response
This project uses node and npm. Go check them out if you don't have them locally installed.
$ npm install --save unfetch
Then with a module bundler like rollup or webpack, use as you would anything else:
// using ES6 modules
import fetch from 'unfetch'
// using CommonJS modules
var fetch = require('unfetch')
The UMD build is also available on unpkg:
<script src="//unpkg.com/unfetch/dist/unfetch.umd.js"></script>
This exposes the unfetch()
function as a global.
As a ponyfill:
import fetch from 'unfetch';
fetch('/foo.json')
.then( r => r.json() )
.then( data => {
console.log(data);
});
// simple GET request:
fetch('/foo')
.then( r => r.text() )
.then( txt => console.log(txt) )
// complex POST request with JSON, headers:
fetch('/bear', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ hungry: true })
}).then( r => {
open(r.headers.get('location'));
return r.json();
})
First off, thanks for taking the time to contribute! Now, take a moment to be sure your contributions make sense to everyone else.
Found a problem? Want a new feature? First of all see if your issue or idea has already been reported. If it hasn't, just open a new clear and descriptive issue.
Pull requests are the greatest contributions, so be sure they are focused in scope, and do avoid unrelated commits.
- Fork it!
- Clone your fork:
git clone https://github.com/<your-username>/unfetch
- Navigate to the newly cloned directory:
cd unfetch
- Create a new branch for the new feature:
git checkout -b my-new-feature
- Install the tools necessary for development:
npm install
- Make your changes.
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request with full remarks documenting your changes.