You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+22-22Lines changed: 22 additions & 22 deletions
Original file line number
Diff line number
Diff line change
@@ -51,17 +51,17 @@ A light-weight module that brings `window.fetch` to Node.js
51
51
52
52
## Motivation
53
53
54
-
Instead of implementing `XMLHttpRequest` in Node.js to run browser-specific [Fetch polyfill](https://github.com/github/fetch), why not go from native `http` to `fetch` API directly? Hence `node-fetch`, minimal code for a `window.fetch` compatible API on Node.js runtime.
54
+
Instead of implementing `XMLHttpRequest` in Node.js to run browser-specific [Fetch polyfill](https://github.com/github/fetch), why not go from native `http` to `fetch` API directly? Hence,`node-fetch`, minimal code for a `window.fetch` compatible API on Node.js runtime.
55
55
56
56
See Matt Andrews' [isomorphic-fetch](https://github.com/matthew-andrews/isomorphic-fetch) or Leonardo Quixada's [cross-fetch](https://github.com/lquixada/cross-fetch) for isomorphic usage (exports `node-fetch` for server-side, `whatwg-fetch` for client-side).
57
57
58
58
## Features
59
59
60
60
- Stay consistent with `window.fetch` API.
61
61
- Make conscious trade-off when following [WHATWG fetch spec][whatwg-fetch] and [stream spec](https://streams.spec.whatwg.org/) implementation details, document known differences.
62
-
- Use native promise, but allow substituting it with [insert your favorite promise library].
63
-
- Use native Node streams for body, on both request and response.
64
-
- Decode content encoding (gzip/deflate) properly, and convert string output (such as `res.text()` and `res.json()`) to UTF-8 automatically.
62
+
- Use native promise but allow substituting it with [insert your favorite promise library].
63
+
- Use native Node streams for body on both request and response.
64
+
- Decode content encoding (gzip/deflate) properly and convert string output (such as `res.text()` and `res.json()`) to UTF-8 automatically.
65
65
- Useful extensions such as timeout, redirect limit, response size limit, [explicit errors](ERROR-HANDLING.md) for troubleshooting.
66
66
67
67
## Difference from client-side fetch
@@ -79,12 +79,12 @@ $ npm install node-fetch
79
79
```
80
80
81
81
## Loading and configuring the module
82
-
We suggest you load the module via `require`, pending the stabalizing of es modules in node:
82
+
We suggest you load the module via `require` until the stabilization of ES modules in node:
83
83
```js
84
84
constfetch=require('node-fetch');
85
85
```
86
86
87
-
If you are using a Promise library other than native, set it through fetch.Promise:
87
+
If you are using a Promise library other than native, set it through `fetch.Promise`:
88
88
```js
89
89
constBluebird=require('bluebird');
90
90
@@ -93,7 +93,7 @@ fetch.Promise = Bluebird;
93
93
94
94
## Common Usage
95
95
96
-
NOTE: The documentation below is up-to-date with `2.x` releases, [see `1.x` readme](https://github.com/bitinn/node-fetch/blob/1.x/README.md), [changelog](https://github.com/bitinn/node-fetch/blob/1.x/CHANGELOG.md) and [2.x upgrade guide](UPGRADE-GUIDE.md) for the differences.
96
+
NOTE: The documentation below is up-to-date with `2.x` releases; see the [`1.x` readme](https://github.com/bitinn/node-fetch/blob/1.x/README.md), [changelog](https://github.com/bitinn/node-fetch/blob/1.x/CHANGELOG.md) and [2.x upgrade guide](UPGRADE-GUIDE.md) for the differences.
NOTE: 3xx-5xx responses are *NOT* exceptions, and should be handled in `then()`, see the next section.
152
+
NOTE: 3xx-5xx responses are *NOT* exceptions and should be handled in `then()`; see the next section for more information.
153
153
154
-
Adding a catch to the fetch promise chain will catch *all* exceptions, such as errors originating from node core libraries, like network errors, and operational errors which are instances of FetchError. See the [error handling document](ERROR-HANDLING.md) for more details.
154
+
Adding a catch to the fetch promise chain will catch *all* exceptions, such as errors originating from node core libraries, network errors and operational errors, which are instances of FetchError. See the [error handling document](ERROR-HANDLING.md) for more details.
> NOTE: You may only cancel streamed requests on Node >= v8.0.0
269
+
> NOTE: You may cancel streamed requests only on Node >= v8.0.0
270
270
271
271
You may cancel requests with `AbortController`. A suggested implementation is [`abort-controller`](https://www.npmjs.com/package/abort-controller).
272
272
273
-
An example of timing out a request after 150ms could be achieved as follows:
273
+
An example of timing out a request after 150ms could be achieved as the following:
274
274
275
275
```js
276
276
importAbortControllerfrom'abort-controller';
@@ -311,7 +311,7 @@ See [test cases](https://github.com/bitinn/node-fetch/blob/master/test/test.js)
311
311
312
312
Perform an HTTP(S) fetch.
313
313
314
-
`url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected promise.
314
+
`url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.
315
315
316
316
<aid="fetch-options"></a>
317
317
### Options
@@ -353,15 +353,15 @@ Note: when `body` is a `Stream`, `Content-Length` is not set automatically.
353
353
354
354
##### Custom Agent
355
355
356
-
The `agent` option allows you to specify networking related options that's out of the scope of Fetch. Including and not limit to:
356
+
The `agent` option allows you to specify networking related options which are out of the scope of Fetch, including and not limited to the following:
357
357
358
358
- Support self-signed certificate
359
359
- Use only IPv4 or IPv6
360
360
- Custom DNS Lookup
361
361
362
362
See [`http.Agent`](https://nodejs.org/api/http.html#http_new_agent_options) for more information.
363
363
364
-
In addition, `agent` option accepts a function that returns http(s).Agent instance given current [URL](https://nodejs.org/api/url.html), this is useful during a redirection chain across HTTP and HTTPS protocol.
364
+
In addition, the `agent` option accepts a function that returns `http`(s)`.Agent` instance given current [URL](https://nodejs.org/api/url.html), this is useful during a redirection chain across HTTP and HTTPS protocol.
365
365
366
366
```js
367
367
consthttpAgent=newhttp.Agent({
@@ -435,7 +435,7 @@ The following properties are not implemented in node-fetch at this moment:
435
435
436
436
<small>*(spec-compliant)*</small>
437
437
438
-
-`body` A string or [Readable stream][node-readable]
438
+
-`body` A `String` or [`Readable` stream][node-readable]
439
439
-`options` A [`ResponseInit`][response-init] options dictionary
440
440
441
441
Constructs a new `Response` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Response/Response).
@@ -465,7 +465,7 @@ This class allows manipulating and iterating over a set of HTTP headers. All met
465
465
466
466
-`init` Optional argument to pre-fill the `Headers` object
467
467
468
-
Construct a new `Headers` object. `init` can be either `null`, a `Headers` object, an key-value map object, or any iterable object.
468
+
Construct a new `Headers` object. `init` can be either `null`, a `Headers` object, an key-value map object or any iterable object.
469
469
470
470
```js
471
471
// Example adapted from https://fetch.spec.whatwg.org/#example-headers-class
@@ -506,15 +506,15 @@ The following methods are not yet implemented in node-fetch at this moment:
506
506
507
507
* Node.js [`Readable` stream][node-readable]
508
508
509
-
The data encapsulated in the `Body` object. Note that while the [Fetch Standard][whatwg-fetch] requires the property to always be a WHATWG `ReadableStream`, in node-fetch it is a Node.js [`Readable` stream][node-readable].
509
+
Data are encapsulated in the `Body` object. Note that while the [Fetch Standard][whatwg-fetch] requires the property to always be a WHATWG `ReadableStream`, in node-fetch it is a Node.js [`Readable` stream][node-readable].
510
510
511
511
#### body.bodyUsed
512
512
513
513
<small>*(spec-compliant)*</small>
514
514
515
515
*`Boolean`
516
516
517
-
A boolean property for if this body has been consumed. Per spec, a consumed body cannot be used again.
517
+
A boolean property for if this body has been consumed. Per the specs, a consumed body cannot be used again.
518
518
519
519
#### body.arrayBuffer()
520
520
#### body.blob()
@@ -541,9 +541,9 @@ Consume the body and return a promise that will resolve to a Buffer.
541
541
542
542
* Returns: <code>Promise<String></code>
543
543
544
-
Identical to `body.text()`, except instead of always converting to UTF-8, encoding sniffing will be performed and text converted to UTF-8, if possible.
544
+
Identical to `body.text()`, except instead of always converting to UTF-8, encoding sniffing will be performed and text converted to UTF-8 if possible.
545
545
546
-
(This API requires an optional dependency on npm package [encoding](https://www.npmjs.com/package/encoding), which you need to install manually. `webpack` users may see [a warning message](https://github.com/bitinn/node-fetch/issues/412#issuecomment-379007792) due to this optional dependency.)
546
+
(This API requires an optional dependency of the npm package [encoding](https://www.npmjs.com/package/encoding), which you need to install manually. `webpack` users may see [a warning message](https://github.com/bitinn/node-fetch/issues/412#issuecomment-379007792) due to this optional dependency.)
0 commit comments