fastify-http-client
Version:
urllib plugin for fastify
75 lines (50 loc) • 2.98 kB
Markdown
# fastify-http-client
[](https://nodei.co/npm/fastify-http-client/)
[](https://travis-ci.org/kenuyx/fastify-http-client)
[](http://standardjs.com/)
[](https://codecov.io/gh/kenuyx/fastify-http-client)
[](https://snyk.io/test/github/kenuyx/fastify-http-client?targetFile=package.json)
[](https://greenkeeper.io/)
A plugin for [Fastify](http://fastify.io/) that adds support for sending HTTP(s) requests.
Under the hood [urllib](https://github.com/node-modules/urllib) is used, the options passed to `register` will be used as the default arguments while creating the urllib client.
## Install
```shell
npm i fastify-http-client --save
```
## Usage
Just add it to the project generated via [fastify-cli](https://github.com/fastify/fastify-cli) with `register` in `app.js` as below.
You can access the [urllib](https://github.com/node-modules/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](https://github.com/node-modules/urllib).
```js
'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](https://github.com/node-modules/urllib) `HttpClient` instance by passing an options object with the client property set to the instance.
```js
'use strict'
const urllib = require('urllib')
module.exports = function (fastify, opts, next) {
fastify.register(require('fastify-http-client'), {
client: urllib.create()
})
// ...
next()
}
```
## Options
Besides `client` property sampled above, properties listed in [urllib / API Doc / Method / Arguments](https://github.com/node-modules/urllib#arguments) are all supported in the options object passed to `register`.
## License
Licensed under [MIT](./LICENSE).