Skip to content

cojs/co-body

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c865f26 · Jun 5, 2024

History

89 Commits
Jun 5, 2024
Jun 5, 2024
Jun 5, 2024
May 21, 2018
Mar 24, 2017
Jun 5, 2024
Jun 5, 2024
Jun 5, 2024
May 21, 2018
Jun 5, 2024

Repository files navigation

co-body

NPM version CI Test coverage npm download

Parse request bodies with generators inspired by Raynos/body.

Installation

$ npm install co-body

Options

  • limit number or string representing the request size limit (1mb for json and 56kb for form-urlencoded)
  • strict when set to true, JSON parser will only accept arrays and objects; when false will accept anything JSON.parse accepts. Defaults to true. (also strict mode will always return object).
  • onProtoPoisoning Defines what action the co-body lib must take when parsing a JSON object with __proto__. This functionality is provided by bourne. See Prototype-Poisoning for more details about prototype poisoning attacks. Possible values are 'error', 'remove' and 'ignore'. Default to 'error', it will throw a SyntaxError when Prototype-Poisoning happen.
  • queryString an object of options when parsing query strings and form data. See qs for more information.
  • returnRawBody when set to true, the return value of co-body will be an object with two properties: { parsed: /* parsed value */, raw: /* raw body */}.
  • jsonTypes is used to determine what media type co-body will parse as json, this option is passed directly to the type-is library.
  • formTypes is used to determine what media type co-body will parse as form, this option is passed directly to the type-is library.
  • textTypes is used to determine what media type co-body will parse as text, this option is passed directly to the type-is library.

more options available via raw-body:

Example

// application/json
var body = await parse.json(req);

// explicit limit
var body = await parse.json(req, { limit: '10kb' });

// application/x-www-form-urlencoded
var body = await parse.form(req);

// text/plain
var body = await parse.text(req);

// either
var body = await parse(req);

// custom type
var body = await parse(req, { textTypes: ['text', 'html'] });

Koa

This lib also supports ctx.req in Koa (or other libraries), so that you may simply use this instead of this.req.

// application/json
var body = await parse.json(this);

// application/x-www-form-urlencoded
var body = await parse.form(this);

// text/plain
var body = await parse.text(this);

// either
var body = await parse(this);

License

MIT