1.0.1 • Published 8 years ago
fastify-curl v1.0.1
fastify-curl
fastify 框架的 httpclient
基于urllib
install
npm install fastify-curl --saveusage
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 beGET,POST,DELETEorPUT. Alias 'type'.- data Object - Data to be sent. Will be stringify automatically.
- dataAsQueryString Boolean - Force convert datato query string.
- content String | Buffer - Manually set the content of payload. If set, datawill be ignored.
- stream stream.Readable - Stream to be pipe to the remote. If set, dataandcontentwill be ignored.
- writeStream stream.Writable - A writable stream to be piped by the response stream. Responding data will be write to this stream and callbackwill be called withdatasetnullafter finished writing.
- consumeWriteStream true - consume the writeStream, invoke the callback after writeStream close.
- contentType String - Type of request data. Could be json. If it'sjson, will auto setContent-Type: application/jsonheader.
- 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 textorjson. If it'stext, thecallbackeddatawould be a String. If it'sjson, thedataof callback would be a parsed JSON Object and will auto setAccept: application/jsonheader. Defaultcallbackeddatawould be aBuffer.
- 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 usetimeout: 5000to tell urllib use same timeout on two phase or set them seperately such astimeout: [3000, 5000], which will set connecting timeout to 3s and response 5s.
- auth String - username:passwordused in HTTP Basic Authorization.
- digestAuth String - username:passwordused in HTTP Digest Authorization.
- agent http.Agent - HTTP Agent object.
Set falseif you does not use agent.
- httpsAgent https.Agent - HTTPS Agent object.
Set falseif 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 resobject when request connected, defaultfalse. aliascustomResponse
- 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(ipandfamily) and should return true or false to identified the address is legal or not. It rely onlookupand have the same version requirement.
 
- callback(err, data, res) Function - Optional callback.- err Error - Would be nullif no error accured.
- data Buffer | Object - The data responsed. Would be a Buffer if dataTypeis set totextor an JSON parsed into Object if it's set tojson.
- res http.IncomingMessage - The response.
 
- err Error - Would be 
see details from https://github.com/node-modules/urllib