前言

两个库都是很好的在 koa 中解析 ctx.request.body 的库

两者如何选择选择

两个库背后其实都是使用的 co-body

koa的库大多如此,依托原有较好的库的基础上,做框架侧的封装。

koa-body 支持除了支持常见的json/text/urlencode格式之类的body解析,还支持文件的解析

两个库的代码相对较少,我们可以看看两者之间关键的区别点:

两者均引用 co-body

koa-body

koa-bodyparser

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/77e3073e-066c-4aa5-8aee-c3e4273b39eb/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3899023a-e44f-4b82-be52-4648f2d3a1e4/Untitled.png

但是区别是 koa-body 还引入了 formidable 来处理 multipart form,从而获得了解析 form 表单,甚至上传文件的能力。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/65257233-6d35-4f4c-b388-37a8f6f96d90/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3c780de5-61ae-4711-8082-28724cae0eca/Untitled.png

杂言

突然想起来 koa-body 当初的V5.0.0 Release Proposal, 当时参与讨论的时候已经是19年了。到现在还没有 release,这些底层类库一旦有大改动往往很难,想要升级,让用户无痛切换,很难。

https://github.com/koajs/koa-body/issues/139#issuecomment-475901385

同时还看到 koa org 收纳了一些好的类库进 org 中,收敛到 @koajs npm org 下,感觉这种行为还是很不错的~ nice