fastify-curl

1.0.1 • Public • Published

fastify-curl

fastify 框架的 httpclient
基于urllib

install

npm install fastify-curl --save

usage

const fastify = require('fastify')()
 
const config = {
  // ...详细信息见下方
}
app.register(curl, config)
 
// Declare a route
fastify.get('/', function(request, reply) {
  const option = {
    // ...详细信息见下方
  }
  const re = await app.curl('http://xxxx', option)
  console.log(re.data);
  reply.send({ hello: 'world' })
})
 
// Run the server!
fastify.listen(3000, '0.0.0.0', function(err) {
  if (err) throw err
  console.log(
    `server listening on http://${fastify.server.address().address}:${
      fastify.server.address().port
    }`
  )
})

config

// default
{
  httpclient: {
    request: {
      timeout: 5000
    },
    httpAgent: {
      keepAlive: true,
      freeSocketKeepAliveTimeout: 4000,
      maxSockets: 9007199254740991,
      maxFreeSockets: 256
    },
    httpsAgent: {
      keepAlive: true,
      freeSocketKeepAliveTimeout: 4000,
      maxSockets: 9007199254740991,
      maxFreeSockets: 256
    }
  }
}

option

  • method String - Request method, defaults to GET. Could be GET, POST, DELETE or PUT. Alias 'type'.
    • data Object - Data to be sent. Will be stringify automatically.
    • dataAsQueryString Boolean - Force convert data to query string.
    • content String | Buffer - Manually set the content of payload. If set, data will be ignored.
    • stream stream.Readable - Stream to be pipe to the remote. If set, data and content will be ignored.
    • writeStream stream.Writable - A writable stream to be piped by the response stream. Responding data will be write to this stream and callback will be called with data set null after finished writing.
    • consumeWriteStream [true] - consume the writeStream, invoke the callback after writeStream close.
    • contentType String - Type of request data. Could be json. If it's json, will auto set Content-Type: application/json header.
    • nestedQuerystring Boolean - urllib default use querystring to stringify form data which don't support nested object, will use qs instead of querystring to support nested object by set this option to true.
    • dataType String - Type of response data. Could be text or json. If it's text, the callbacked data would be a String. If it's json, the data of callback would be a parsed JSON Object and will auto set Accept: application/json header. Default callbacked data would be a Buffer.
    • fixJSONCtlChars Boolean - Fix the control characters (U+0000 through U+001F) before JSON parse response. Default is false.
    • headers Object - Request headers.
    • timeout Number | Array - Request timeout in milliseconds for connecting phase and response receiving phase. Defaults to exports.TIMEOUT, both are 5s. You can use timeout: 5000 to tell urllib use same timeout on two phase or set them seperately such as timeout: [3000, 5000], which will set connecting timeout to 3s and response 5s.
    • auth String - username:password used in HTTP Basic Authorization.
    • digestAuth String - username:password used in HTTP Digest Authorization.
    • agent http.Agent - HTTP Agent object. Set false if you does not use agent.
    • httpsAgent https.Agent - HTTPS Agent object. Set false if you does not use agent.
    • ca String | Buffer | Array - An array of strings or Buffers of trusted certificates. If this is omitted several well known "root" CAs will be used, like VeriSign. These are used to authorize connections. Notes: This is necessary only if the server uses the self-signed certificate
    • rejectUnauthorized Boolean - If true, the server certificate is verified against the list of supplied CAs. An 'error' event is emitted if verification fails. Default: true.
    • pfx String | Buffer - A string or Buffer containing the private key, certificate and CA certs of the server in PFX or PKCS12 format.
    • key String | Buffer - A string or Buffer containing the private key of the client in PEM format. Notes: This is necessary only if using the client certificate authentication
    • cert String | Buffer - A string or Buffer containing the certificate key of the client in PEM format. Notes: This is necessary only if using the client certificate authentication
    • passphrase String - A string of passphrase for the private key or pfx.
    • ciphers String - A string describing the ciphers to use or exclude.
    • secureProtocol String - The SSL method to use, e.g. SSLv3_method to force SSL version 3.
    • followRedirect Boolean - follow HTTP 3xx responses as redirects. defaults to false.
    • maxRedirects Number - The maximum number of redirects to follow, defaults to 10.
    • formatRedirectUrl Function - Format the redirect url by your self. Default is url.resolve(from, to).
    • beforeRequest Function - Before request hook, you can change every thing here.
    • streaming Boolean - let you get the res object when request connected, default false. alias customResponse
    • gzip Boolean - Accept gzip response content and auto decode it, default is false.
    • timing Boolean - Enable timing or not, default is false.
    • enableProxy Boolean - Enable proxy request, default is false.
    • proxy String | Object - proxy agent uri or options, default is null.
    • lookup Function - Custom DNS lookup function, default is dns.lookup. Require node >= 4.0.0(for http protocol) and node >=8(for https protocol)
    • checkAddress Function: optional, check request address to protect from SSRF and similar attacks. It receive tow arguments(ip and family) and should return true or false to identified the address is legal or not. It rely on lookup and have the same version requirement.
  • callback(err, data, res) Function - Optional callback.
    • err Error - Would be null if no error accured.
    • data Buffer | Object - The data responsed. Would be a Buffer if dataType is set to text or an JSON parsed into Object if it's set to json.
    • res http.IncomingMessage - The response.

see details from https://github.com/node-modules/urllib

Readme

Keywords

none

Package Sidebar

Install

npm i fastify-curl

Weekly Downloads

22

Version

1.0.1

License

ISC

Unpacked Size

10.5 kB

Total Files

5

Last publish

Collaborators

  • weivea