多部分/表单数据的 POSTMAN

Posted

技术标签:

【中文标题】多部分/表单数据的 POSTMAN【英文标题】:POSTMAN for Multipart/form-data 【发布时间】:2017-10-26 05:40:12 【问题描述】:

如何将 POSTMAN 用于具有自定义标头的 Multipart/form-data 以测试我的控制器,该控制器将 2 个文件作为参数 (public ... controller( MultipartFile[] files))?

POST .... HTTP/1.1
.
.
.
---boundary123
Content-type:application/octet-stream
content-Disposition: form-data filenale="abc.txt" name="someuniquename"
[paylaod content](this is in xml format)
---boundary123
content-type:application/json
content-Disposition:form-data name="metadata"
ID:"999"
---boundary123

【问题讨论】:

终于!显然这个问题现在已经修复:github.com/postmanlabs/postman-app-support/issues/1104 【参考方案1】:

在 Postman 中使用 'Multipart/form-data ' 的步骤

    创建一个新标签 插入控制器网址 将方法类型设置为 POST 在正文标签下,选择form-data 对于作为文件的每个键,将 Value 类型设置为 File

【讨论】:

我需要输入自定义标题和边界吗?? @phalco 什么类型的自定义标头?内容类型? 它包含主机、内容类型(multipart/form-data)、边界、有效负载计数也在标题中 您也可以添加自定义标题。但是对于内容类型而言,就没有必要了。主机已包含在您的网址中。有效载荷计数等完全取决于您的要求。但不需要默认实现。 是的,我正在尝试修复我的代码中的一些错误。【参考方案2】:

我希望这将帮助其他人避免长时间的调试工作。底线是,对于某些分段上传,您完全不走运。例如,如果你需要做 multipart/related,并且需要在 Headers 中用 Content-Type 来表达,Postman 帮不了你。主要是因为 Postman 只生成随机边界,即使您添加自己的边界也是如此。困难的部分是 Postman 将 声称 在 Postman 控制台中使用您的边界,但实际上会在调用中使用不同的边界。因此声明的标题边界和实际使用的边界将不匹配。

以下是来自 Postman 的请求示例,可在 Postman 控制台和 Fiddler 中查看。如您所见,Fiddler 显示 Postman 实际上正在发送一个随机边界,而 Postman 声称使用提供的边界。

我真的希望他们在 Postman 中解决这个问题。至少向 Postman 控制台展示它,即使他们没有解决根本问题。对于大多数 API 来说,它都是一个很棒的工具,但是如果您尝试访问 DICOM 服务器,并且要遵守它……那么您就不走运了。

【讨论】:

【参考方案3】:

这对于 Postman 来说是一个众所周知的问题。如果您的设置涉及使用文字或 JSON 作为一部分,而对另一部分使用图片,这可能会有点棘手。关键是将Content-Type Header 设置为multipart/mixed,然后将所有内容转换为文件。如果是文本,您可以忽略“将其转换为文件”步骤:)

将此评论留在:https://github.com/postmanlabs/postman-app-support/issues/1104

Ninja 更新:不确定这是否对其他人有帮助,但对于在单个多部分 POST 请求中上传多个文件类型/内容类型的特定场景,有一种解决方法。 p>

    将标头Content-Type 设置为multipart/mixed。 在Body 中选择form-data 选项。 将所有项目转换为文件。字符串内容应该变成文本文件等。 通过选择file 添加每个文件,添加一个键名。

这种方法不需要实际手动指定每个Content-TypeContent-Disposition。这里的技巧是将所有相关内容序列化为持久文件类型。希望对某人有所帮助!

【讨论】:

【参考方案4】:

This video 描述了如何使用 postman 发布 multipart/form-data。我上传了一个 Content-Type 为 multipart/form-data 的文本文件。

【讨论】:

以上是关于多部分/表单数据的 POSTMAN的主要内容,如果未能解决你的问题,请参考以下文章

验证失败后,servlet中止多部分表单数据提交

Angularjs如何上传多部分表单数据和文件?

Alamofire - 多部分表单数据键:值

具有特定 JSON 要求的多部分表单数据 POST

使用 PHP 手动解析原始多部分/表单数据数据

使用 Undertow 的多部分表单数据示例