# koa-bodyparser

> a body parser for Koa

Latest version **4.4.1** (published 2023-06-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install koa-bodyparser
pnpm add koa-bodyparser
yarn add koa-bodyparser
bun add koa-bodyparser
```

## Health

**Score 33/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 4.4.1 |
| Published | 2023-06-22 |
| First published | 2014-02-18 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | separate (@types/koa-bodyparser) |
| Module format | CommonJS |
| Node | >=8.0.0 |
| Dependencies | 3 |
| Unpacked size | 14.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1326 |
| Author | dead_horse |
| Maintainers | dead_horse, fengmk2 |
| Keywords | bodyParser, json, urlencoded, koa, body |

## Links

- npm: https://www.npmjs.com/package/koa-bodyparser
- Repository: https://github.com/koajs/bodyparser
- Homepage: https://github.com/koajs/body-parser
- Issues: https://github.com/koajs/body-parser/issues
- npm.io page: https://npm.io/package/koa-bodyparser

## Dependencies (3)

- [co-body](https://npm.io/package/co-body.md) ^6.0.0
- [copy-to](https://npm.io/package/copy-to.md) ^2.0.1
- [type-is](https://npm.io/package/type-is.md) ^1.6.18

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 4.4.1 (latest) — 2023-06-22
- 2.5.0 (2.x) — 2017-03-21
- 3.2.0 (next) — 2016-07-31
- 4.4.0 — 2023-03-15
- 4.3.0 — 2020-03-24
- 4.2.1 — 2018-05-21
- 4.2.0 — 2017-03-21
- 2.4.0 — 2017-03-01
- 4.1.0 — 2017-03-01
- 4.0.0 — 2017-02-27
- 2.3.0 — 2016-11-14
- 2.2.0 — 2016-05-16
- 3.1.0 — 2016-05-10
- 2.1.0 — 2016-05-10
- 3.0.0 — 2015-11-18
- … 15 more at https://npm.io/package/koa-bodyparser/versions

## README

# [**koa-bodyparser**](https://github.com/koajs/bodyparser)


[![NPM version][npm-image]][npm-url]
[![build status][travis-image]][travis-url]
[![Coveralls][coveralls-image]][coveralls-url]
[![David deps][david-image]][david-url]
[![node version][node-image]][node-url]

[npm-image]: https://img.shields.io/npm/v/koa-bodyparser.svg?style=flat-square
[npm-url]: https://npmjs.com/package/koa-bodyparser
[travis-image]: https://img.shields.io/travis/koajs/bodyparser.svg?style=flat-square
[travis-url]: https://travis-ci.org/koajs/bodyparser
[coveralls-image]: https://img.shields.io/coveralls/koajs/bodyparser.svg?style=flat-square
[coveralls-url]: https://coveralls.io/r/koajs/bodyparser?branch=master
[david-image]: https://img.shields.io/david/koajs/bodyparser.svg?style=flat-square
[david-url]: https://david-dm.org/koajs/bodyparser
[node-image]: https://img.shields.io/badge/node.js-%3E=_8-green.svg?style=flat-square
[node-url]: http://nodejs.org/download/

A body parser for koa, based on [co-body](https://github.com/tj/co-body). support `json`, `form` and `text` type body.

> Notice: this module doesn't support parsing multipart format data, please use [`@koa/multer`](https://github.com/koajs/multer) to parse multipart format data.

## Install

[![NPM](https://nodei.co/npm/koa-bodyparser.png?downloads=true)](https://nodei.co/npm/koa-bodyparser/)

## Usage

```js
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');

const app = new Koa();
app.use(bodyParser());

app.use(async ctx => {
  // the parsed body will store in ctx.request.body
  // if nothing was parsed, body will be an empty object {}
  ctx.body = ctx.request.body;
});
```

## Options

* **enableTypes**: parser will only parse when request type hits enableTypes, support `json/form/text/xml`, default is `['json', 'form']`.
* **encoding**: requested encoding. Default is `utf-8` by `co-body`.
* **formLimit**: limit of the `urlencoded` body. If the body ends up being larger than this limit, a 413 error code is returned. Default is `56kb`.
* **jsonLimit**: limit of the `json` body. Default is `1mb`.
* **textLimit**: limit of the `text` body. Default is `1mb`.
* **xmlLimit**: limit of the `xml` body. Default is `1mb`.
* **strict**: when set to true, JSON parser will only accept arrays and objects. Default is `true`. See [strict mode](https://github.com/cojs/co-body#options) in `co-body`. In strict mode, `ctx.request.body` will always be an object(or array), this avoid lots of type judging. But text body will always return string type.
* **detectJSON**: custom json request detect function. Default is `null`.

  ```js
  app.use(bodyParser({
    detectJSON: function (ctx) {
      return /\.json$/i.test(ctx.path);
    }
  }));
  ```

* **extendTypes**: support extend types:

  ```js
  app.use(bodyParser({
    extendTypes: {
      json: ['application/x-javascript'] // will parse application/x-javascript type body as a JSON string
    }
  }));
  ```

* **onerror**: support custom error handle, if `koa-bodyparser` throw an error, you can customize the response like:

  ```js
  app.use(bodyParser({
    onerror: function (err, ctx) {
      ctx.throw(422, 'body parse error');
    }
  }));
  ```

* **disableBodyParser**: you can dynamic disable body parser by set `ctx.disableBodyParser = true`.

  ```js
  app.use(async (ctx, next) => {
    if (ctx.path === '/disable') ctx.disableBodyParser = true;
    await next();
  });
  app.use(bodyParser());
  ```

## Raw Body

You can access raw request body by `ctx.request.rawBody` after `koa-bodyparser` when:

1. `koa-bodyparser` parsed the request body.
2. `ctx.request.rawBody` is not present before `koa-bodyparser`.

## Koa 1 Support

To use `koa-bodyparser` with koa@1, please use [bodyparser 2.x](https://github.com/koajs/bodyparser/tree/2.x).

```bash
npm install koa-bodyparser@2 --save
```

#### Licences
---
[MIT](LICENSE)

---
_Source: https://npm.io/package/koa-bodyparser · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
