Giter Site home page Giter Site logo

fastify-raw-body's Introduction

fastify-raw-body

ci js-standard-style

Adds the raw body to the Fastify request object.

Install

Fastify v3

npm i fastify-raw-body

Fastify v2

The version 2.x of this module support Fastify v2 and Node.js>=6

Usage

This plugin will add the request.rawBody.
It will get the data using the preParsing hook.

const Fastify = require('fastify')
const app = Fastify()

app.register(require('fastify-raw-body'), {
  field: 'rawBody', // change the default request.rawBody property name
  global: false, // add the rawBody to every request. **Default true**
  encoding: 'utf8', // set it to false to set rawBody as a Buffer **Default utf8**
  runFirst: true, // get the body before any preParsing hook change/uncompress it. **Default false**
  routes: [] // array of routes, **global** will be ignored
})

app.post('/', {
  config: {
    // add the rawBody to this route. if false, rawBody will be disabled when global is true
    rawBody: true
  },
  handler (req, reply) {
    // req.rawBody the string raw body
    reply.send(req.rawBody)
  }
})

Notice: Setting global: false and then the route configuration { config: { rawBody: true } } will save memory of your server since the rawBody is a copy of the body and it will double the memory usage.

So use it only for the routes that you need to.

Raw body as Buffer

It is important to know that setting encoding: false will run addContentTypeParser to add a content type parser for application/json.

This is needed since the default content type parser will set the encoding of the request stream to { parseAs: 'string' }.

If you haven't customized this component, it will be secure as the original one since secure-json-parse is used under the hood.

License

Licensed under MIT.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.