如何区分koa ctx是multipart/form-data类型还是不是?

How to distinguish koa ctx is multipart/form-data type or not?

所以我正在使用 koa2, 如果这个请求是多部分类型,相信我需要处理

    ctx.request.body.fields

否则我处理

    ctx.request.body

那么区分和处理这两种情况的最佳方法是什么?

我想我的观点是,如果您需要检查表单提交以及其他 activity,那么您的端点可能做得有点多?当然,这在很大程度上取决于您的用例,但是将表单数据和其他内容类型分开可能会更清楚 API。

话虽如此,我认为没有比检查 fields 的存在更复杂的原因了。 koa-body 是解决此问题的好方法。

您可能要考虑的一件事是使用中间件堆栈以发挥您的优势。例如,仅在有表单提交时才执行操作,但允许执行其他操作:

router.post('/', koaBody({ multipart: true }),
  async (ctx, next) => {
    if (ctx.request.body.fields) {
      // Handle form if present
    }
    await next() // Pass control down the stack
  }
))