think-fetch
Fetch for ThinkJS 3.x
Install
$ npm install think-fetch --save
How to use
config file src/config/extend.js
const fetch = ; moduleexports = fetch // HTTP request client.;
Methods in Controller
moduleexports = Controller async { // plain text or html const text = await this; // json const json = await this; // post const body = await this; // stream const res = await this; const dest = fs; resbody; // post with stream from file const stream = fs; const result = this; }
API
fetch(url[, options])
url
A string representing the URL for fetchingoptions
Options for the HTTP(S) request- Returns:
Promise<Response>
Perform an HTTP(S) fetch.
url should be an absolute url, such as http://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.
Options
The default values are shown after each option key.
// These properties are part of the Fetch Standard method: 'GET' headers: {} // request headers. format is the identical to that accepted by the Headers constructor (see below) body: null // request body. can be null, a string, a Buffer, a Blob, or a Node.js Readable stream redirect: 'follow' // set to `manual` to extract redirect headers, `error` to reject redirect // The following properties are node-fetch extensions follow: 20 // maximum redirect count. 0 to not follow redirect timeout: 0 // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies) compress: true // support gzip/deflate content encoding. false to disable size: 0 // maximum response body size in bytes. 0 to disable agent: null // http(s).Agent instance, allows custom proxy, certificate etc.
Default Headers
If no values are set, the following request headers will be sent automatically:
Header | Value |
---|---|
Accept-Encoding |
gzip,deflate (when options.compress === true ) |
Accept |
*/* |
Connection |
close (when no options.agent is present) |
Content-Length |
(automatically calculated, if possible) |
User-Agent |
node-fetch/1.0 (+https://github.com/bitinn/node-fetch) |