【发布时间】:2021-08-05 13:35:20
【问题描述】:
现在已经好几天了,我被困在我认为应该是一个简单的问题来解决......
我有一个 nodeJS express 应用程序,它根据对特定路由的请求,向外部服务发出带有有效负载的 AXIOS 发布请求。 此服务确实以多部分/混合内容类型(标题中提到内容类型)进行响应。 响应包含一个 PDF 和一个带有信息的 JSON。
我在 AWS S3 上成功地将 response.data 完全保存为 PDF。 但我无法找到至少一种方法来解析 response.data 以提取我需要的 JSON 信息。
这是我在 Postman 响应面板中得到的信息, (如您所见,这是一种在 Colissimo 上生成法国邮政服务标签的方法)
我还可以补充一下,我尝试了很多 npm 包,但都没有成功。
如果您知道如何操作,非常感谢!
--uuid:f0bf15c8-03ba-41a4-8c9a-aac9d8e0d9ca
Content-Type: application/json;charset=UTF-8
Content-Transfer-Encoding: binary
Content-ID: <jsonInfos>
{"messages":[{"id":"0","type":"INFOS","messageContent":"La requête a été traitée avec succès","replacementValues":[]}],"labelXmlV2Reponse":null,"labelV2Response":{"parcelNumber":"8R42943164203","parcelNumberPartner":null,"pdfUrl":null,"fields":null}}
--uuid:f0bf15c8-03ba-41a4-8c9a-aac9d8e0d9ca
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <label>
%PDF-1.4
%����
3 0 obj <</Filter/FlateDecode/Length 1567>>stream
x��X�n7��W�L��;�`��)��!��I)�@��Ts�����������]
.... and more
我在路由中的简单 AXIOS 请求
let url = "https://ws.colissimo.fr/sls-ws/SlsServiceWSRest/2.0/generateLabel";
const response = await axios({
url,
method: 'POST',
data,
responseType: "stream"
});
console.log("data", response.data);
【问题讨论】:
-
大多数人会去找一个可以为你解析多部分混合的库,因为你自己做有点麻烦。有关一些想法,请参阅stackoverflow.com/questions/38221104/…。
-
嘿@jfriend00 当然我看到了这篇文章并尝试了每个 npm 包,但没有一个与我试图解析的响应一起工作......:/
-
那么,我认为您需要详细了解当您尝试应该能够处理这种格式的包时究竟是什么不起作用。要么你没有使用正确的包,这个特定的响应有某种问题,要么某处的某些代码中存在错误,因为有许多包应该能够处理
multipart/mixed。所以,我们真的没有任何关于为什么他们都不为你工作的原因。您显示的代码未显示使用任何用于解析 multipart/mixed 的包。
标签: node.js express axios multipart