A plugin for Fastify that adds support for sending HTTP(s) requests.
Under the hood urllib is used, the options passed to register
will be used as the default arguments while creating the urllib client.
npm i fastify-http-client --save
Just add it to the project generated via fastify-cli with register
in app.js
as below.
You can access the urllib HttpClient
instance via fastify.httpclient
, which can be used to send HTTP(s) requests via methods curl
/ request
/ requestWithCallback
/ requestThunk
. You can also send HTTP(s) requests directly via fastify.curl
, which is the same function as request
/ curl
in urllib.
'use strict'
module.exports = function (fastify, opts, next) {
fastify.register(require('fastify-http-client'))
// request via httpclient
fastify.httpclient.request('https://nodejs.org/en/', (err, body) => {
console.log('body size: %d', body.length)
})
// request via curl method
fastify.curl('https://nodejs.org/en/').then((result) => {
console.log('status: %s, body size: %d, headers: %j',
result.res.statusCode, result.data.length, result.res.headers)
}).catch((err) => {
console.error(err)
})
next()
}
You may also supply an existing urllib HttpClient
instance by passing an options object with the client property set to the instance.
'use strict'
const urllib = require('urllib')
module.exports = function (fastify, opts, next) {
fastify.register(require('fastify-http-client'), {
client: urllib.create()
})
// ...
next()
}
Besides client
property sampled above, properties listed in urllib / API Doc / Method / Arguments are all supported in the options object passed to register
.
Licensed under MIT.