> The core lightweight HTTP client for Node [GitHub](https://github.com/ethanent/centra) | [NPM](https://npmjs.com/package/centra) ## Install ```shell npm i centra ``` ## Why centra? centra is the best request library for developers; it provides a number of extremely useful features while still being one of the most lightweight Node.js HTTP client libraries available. ## Use centra! First, require the library. ```js const c = require('centra') ``` Then let's make a request in an async function! ```js ;(async () => { const res = await c('https://example.com').send() console.log(await res.text()) })() ``` ## More advanced usage ### Send data in a JSON body ```js c('https://example.com/nonexistentJSONAPI', 'POST').body({ 'name': 'Ethan' }, 'json').send().then((res) => { /*...*/ }) ``` ### Send data in a form body ```js c('https://example.com/nonexistentJSONAPI', 'POST').body({ 'name': 'Ethan' }, 'form').send().then((res) => { /*...*/ }) ``` ### Set query string parameters One at a time: ```js c('https://example.com/user').query('id', 'u1817760').send().then((res) => { /*...*/ }) ``` Many at a time: ```js c('https://example.com/user').query({ 'id', 'u1817760', 'name': 'Ethan' }).send().then((res) => { /*...*/ }) ``` ### Set a request timeout ```js c('https://example.com').timeout(2000).send().then((res) => { // Success! }).catch((err) => { // Has the request timed out? }) ``` ### Stream a request's response In this example, the [stream](https://nodejs.org/api/stream.html) is piped to a file: ```js // require the fs module beforehand c('https://example.com').stream().send().then((stream) => stream.pipe(fs.createWriteStream(path.join(__dirname, 'logo.png')))) ``` ### Follow redirects ```js c('https://example.com/').followRedirects(5).send() ``` ### Switch paths on the fly ```js c('https://example.com/test').path('/hello').send() // This will make a request to https://example.com/test/hello ``` ### Specify request headers One at a time: ```js c('https://example.com').header('Content-Type', 'application/json').send() ``` Many at a time: ```js c('https://example.com').header({ 'Content-Type': 'application/json', 'X-Connecting-With': 'centra' }).send() ``` ### Modify core HTTP request options See [http.request](https://nodejs.org/dist/latest-v10.x/docs/api/http.html#http_http_request_url_options_callback)'s options for more information about core HTTP request options. Let's change our localAddress as an example. ```js c('https://example.com').option('localAddress', '127.0.0.2').send() ``` ### Accept compressed responses ```js c('https://example.com').compress().send() // This will cause centra to accept compressed content from the server. (gzip and deflate are currently supported) ```