https://github.com/hkust-vislab/koa-bodyparser-ts
a koa-bodyparser in typescript
https://github.com/hkust-vislab/koa-bodyparser-ts
body-parser bodyparser koa2 koajs middleware typescript
Last synced: 3 months ago
JSON representation
a koa-bodyparser in typescript
- Host: GitHub
- URL: https://github.com/hkust-vislab/koa-bodyparser-ts
- Owner: HKUST-VISLab
- License: mit
- Created: 2017-05-06T13:52:43.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2020-06-02T00:04:27.000Z (almost 6 years ago)
- Last Synced: 2025-04-12T01:16:15.556Z (about 1 year ago)
- Topics: body-parser, bodyparser, koa2, koajs, middleware, typescript
- Language: TypeScript
- Size: 4.15 MB
- Stars: 7
- Watchers: 6
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
koa-bodyparser-ts
=================
[](https://travis-ci.org/HKUST-VISLab/koa-bodyparser-ts)
[](https://badge.fury.io/js/koa-bodyparser-ts)
[](https://codecov.io/gh/HKUST-VISLab/koa-bodyparser-ts)
[](https://github.com/HKUST-VISLab/koa-bodyparser-ts)
[](https://greenkeeper.io/)
A body parser for koa, base on [co-body](https://github.com/tj/co-body). support `json`, `form` and `text` type body.
## Install
`npm install koa-bodyparser-ts --save`
## Usage
```ts
import * as Koa from "koa";
import bodyParser from "koa-bodyparser-ts";
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, default is `['json', 'form']`.
* **encode**: 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`.
* **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('body parse error', 422);
}
}));
```
* **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`.
## Licences
[MIT](LICENSE)