/response

Wrapper over Node.js res, making it easy to send HTTP responses

Primary LanguageTypeScriptMIT LicenseMIT

Response

circleci-image npm-image license-image

Wrapper over NodeJs res object to simplify the process of sending HTTP response.

Features

  1. Simple to use API for making HTTP response.
  2. Properly closes the streams pipe to the response object.
  3. Support for lazily sending the response. Helpful when you want to mutate the response inside a downstream middleware.
  4. Etag generation.
  5. In built support for sending plain and signed cookies.

Table of contents

Usage

Install the package from npm as follows:

npm i @poppinss/response

# yarn
yarn add @poppinss/response

and then use it as follows

import { Response, ResponseConfigContract } from '@poppinss/response'
import { createServer } from 'http'

const config: ResponseConfigContract = {
  etag: false,
  jsonpCallbackName: 'callback',
  secret: 'optional-secret-to-sign-cookies',
  cookie: {},
}

createServer((req, res) => {
  const response = new Response(req, res, config)

  response.send({ hello: 'world' }) // objects
  response.send(Buffer.from('hello world')) // buffer
  response.send(true) // boolean
  response.send(10) // numbers
  response.send('<p> Hello world </p>') // html

  response.pipe(fs.createReadStream('profile.jpg')) // streams
  response.download('path/to/file.jpg') // stream files
  response.attachment('path/to/file.jpg') // set Content-Disposition header

  response.cookie('session-id', '1') // set signed cookie
})

Config

{
"etag": false

Whether or not to generate etag for all responses. Etag helps the browser for re-using the cache response when etags are same. Default value is false

"jsonpCallbackName": "callback"

The callback name for the JSONP response. In case of dynamic callback names, you can passing it inline when calling response.jsonp() method.

"secret"

Optional Define a secret to sign cookies.

"cookie"

Partial Config to generate the cookie header. Make sure to check cookie package docs for list of available options.

}

API

Following are the autogenerated files via Typedoc

Maintainers

Harminder virk