1.0.1 • Published 7 years ago
fastify-curl v1.0.1
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 beGET
,POST
,DELETE
orPUT
. 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
andcontent
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 withdata
setnull
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'sjson
, will auto setContent-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
orjson
. If it'stext
, thecallback
eddata
would be a String. If it'sjson
, thedata
of callback would be a parsed JSON Object and will auto setAccept: application/json
header. Defaultcallback
eddata
would 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: 5000
to 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: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, 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(
ip
andfamily
) and should return true or false to identified the address is legal or not. It rely onlookup
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 totext
or 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