think-fetch
TypeScript icon, indicating that this package has built-in type declarations

1.1.2 • Public • Published

think-fetch

npm Build Status Coverage Status

Fetch for ThinkJS 3.x

Install

$ npm install think-fetch --save

How to use

config file src/config/extend.js

const fetch = require('think-fetch');
 
module.exports = [
  fetch, // HTTP request client.
];

Methods in Controller

module.exports = class extends think.Controller {
  async indexAction () {
 
    // plain text or html
    const text = await this.fetch('https://github.com/').then(res => res.text());
 
    // json
    const json = await this.fetch('https://api.github.com/repos/thinkjs/think-fetch').then(res => res.json());
 
    // post
    const body = await this.fetch('http://httpbin.org/post', { method: 'POST', body: 'a=1' }).then(res => res.json());
 
    // stream
    const res = await this.fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png');
    const dest = fs.createWriteStream('./octocat.png');
    res.body.pipe(dest);
 
    // post with stream from file
    const stream = fs.createReadStream('input.txt');
    const result = this.fetch('http://httpbin.org/post', { method: 'POST', body: stream }).then(res => res.json());
  }
}

API

fetch(url[, options])

  • url A string representing the URL for fetching
  • options 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)

More Methods Click

/think-fetch/

    Package Sidebar

    Install

    npm i think-fetch

    Weekly Downloads

    5

    Version

    1.1.2

    License

    MIT

    Unpacked Size

    8.15 kB

    Total Files

    9

    Last publish

    Collaborators

    • berwin
    • bezos
    • huangxiaolu
    • lizheming
    • lushijie
    • sijiecai
    • toxicjohann
    • welefen