Skip to content

Native Adapter 下缺少公开的原始请求流入口,导致 multipart 文件上传无法在应用层正常扩展 #1

@zhouavs

Description

@zhouavs

问题描述

在使用 VextJS 的 native adapter 时,multipart/form-data 文件上传目前缺少可用的官方扩展入口。

根据现有文档和实现:

  • 内置 body-parser 只支持:
    • application/json
    • application/x-www-form-urlencoded
  • multipart/form-data 不在内置支持范围内
  • 但 native adapter 没有公开原始请求流或原始 Node.js request 对象
  • 内部 _getRawBody() 返回的是字符串,不适合 formidablebusboy 这类 multipart 解析器

结果

这会导致应用层虽然知道 multipart 需要“自行扩展”,但实际上没有稳定的公开能力去实现这件事。

如果要在 native adapter 下支持文件上传,当前通常只能:

  • 修改框架内部实现
  • node_modules 打补丁
  • 在应用层重写 / 替换 adapter

这对一个常见场景来说改动过大。

期望

希望 native adapter 至少提供以下能力之一:

  1. VextRequest 上公开原始请求对象
    例如:req.rawRequest

  2. 提供官方 multipart 插件 / 中间件

  3. 提供稳定的原始请求流访问方式
    而不是仅有字符串化后的 _getRawBody()

为什么需要这个能力

文件上传是基础能力。

目前 native adapter 在这件事上存在一个落差:

  • 文档上说 multipart 需要扩展
  • 但实际没有足够的公开扩展点

这使得 native adapter 在文件上传场景下不够完整,也增加了应用层接入成本和升级风险。

建议

如果可以的话,比较直接的方案是:

  • 在 native adapter 下公开原始请求对象
  • 明确文档中 multipart 插件可以基于这个对象做解析

这样应用层就可以直接接入成熟的 multipart 解析库,而不需要修改框架内部。

使用场景

  • adapter: native
  • 场景: multipart/form-data 文件上传
  • 诉求: 在应用层以官方方式接入 multipart 解析能力

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions