【问题标题】:How to distinguish koa ctx is multipart/form-data type or not?如何区分 koa ctx 是否为 multipart/form-data 类型?
【发布时间】:2018-06-05 13:04:19
【问题描述】:

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

    ctx.request.body.fields

否则我处理

    ctx.request.body

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

【问题讨论】:

  • 致给我-1的人:如果我知道要搜索什么,我不会在这里提问。如果你根据这些关键词看不懂我的问题,那你就没有资格写代码。
  • 你不能检查ctx.req.headers并查看Content-Type吗?
  • @saadq 我可以,现在我可以检查 ctx.request.body.fields 是否未定义。但是考虑到这么多包:koa-body、koa-bodyparser、koa-better-body ......我正在寻找最好的方法来做到这一点。
  • 您也可以尝试控制台记录 ctx,然后决定要做什么。

标签: koa koa2


【解决方案1】:

我想我的观点是,如果您需要检查表单提交以及其他活动,那么您的端点可能做得有点多?当然,这在很大程度上取决于您的用例,但将表单数据和其他内容类型分开可能是一个更清晰的 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
  }
))

【讨论】:

    猜你喜欢
    • 2016-02-18
    • 1970-01-01
    • 2014-10-31
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多