# bodyParser **Repository Path**: towardly/bodyParser ## Basic Information - **Project Name**: bodyParser - **Description**: koa2 bodyparser - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-04-04 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # bodyParser koa2 bodyparser;依赖于:[raw-body](https://www.npmjs.com/package/raw-body),[busboy](https://www.npmjs.com/package/busboy);支持的类型有:*json*, *text*, *xml*, *form*, *raw*, *multipart*, 后续可能会根据实际的需求进行增加。*file* 类型使用 [busboy](https://www.npmjs.com/package/busboy) 进行解析,其余的用 [raw-body](https://www.npmjs.com/package/raw-body) 进行解析。 ## 使用 ### 1. 安装 ```nodejs yarn add raw-body yarn add busboy ``` 如果不需要进行文件上传(*multipart*), 可以选择不安装 busboy,然后选择使用 *bodyParser_exclude_busboy.js*的代码即可 ### 2. 配置 ```nodejs app.use(require('./packages/bodyParser')({})); ``` 配置选项: * text: *Object*, 默认:`{ limit: '1mb', encoding: true }` * json: *Object*, 默认:`{ limit: '1mb', encoding: true }` * form: *Object*, 默认:`{ limit: '56kb', encoding: true }` * raw: *Object*, 默认:`{ limit: '100kb', encoding: true }` * xml: *Object*, 默认:`{ limit: '1mb', encoding: true }` 以上4个参数分别对应于, 解析相应格式的数据的时候, [raw-body](https://www.npmjs.com/package/raw-body)需要的参数 * extendTypes:*Object*,解析相应格式需要匹配的后缀格式 * text: *Array*,默认:`[ 'text/plain', 'text/html' ]` * json: *Array*,默认:`[ 'application/json', 'application/json-patch+json', 'application/vnd.api+json', 'application/csp-report' ]` * form:*Array*,默认:`[ 'application/x-www-form-urlencoded' ]` * raw:*Array*,默认:`[ 'application/octet-stream' ]` * xml:*Array*,默认:`[ 'text/xml' ]` * multipart:*Array*,默认:`[ 'multipart/form-data' ]` 使用的时候,只需要配置自己需要的就行,会自动跟默认的进行合并;解析器会拿 `request` 的 `content-type` 来比较, 使用的函数是 `ctx.is(extendTypes.*)`,如果匹配到对应的类型,则执行相应的解析,如果没有正确匹配到,则返回 `undefined` ### 3. 使用 ```nodejs let body = ctx.request.body ``` 如果是 *json* 则返回的是使用 `JSON.parse()` 解析后的对象; *form* 返回的是 `querystring.parse()` 解析后的对象 _注意:该对象跟普通的Object是不同的,详情参考:_[querystring_parse](http://nodejs.cn/api/querystring.html#querystring_querystring_parse_str_sep_eq_options)