我有一个将响应作为“八位字节流”返回的API。这是同样的大摇大摆。
responses: {
'200': {
description: 'Will return the pdf for an invoice',
content: {
'application/octet-stream': {
schema: '',
},
},
},
}
来自邮递员和招摇的用户界面,我能够将响应另存为PDF文件。但与节点,我不能写PDF文件。
下面是节点js调用API的代码。
var fs = require('fs');
var request = require('request');
let headers = {
'Content-Type': 'application/json',
'accept': "application/octet-stream",
}
let body = {
"invoiceId": "343",
"slCompId": 243,
"platfromCompId": "4620816365013235830"
}
request.post({
headers,
url: 'http://localhost:3001/invoice/',
json: body
},
function (error, response, body) {
console.log(response);
console.log("response");
fs.writeFile('a.pdf', response.body, 'binary')
});
编辑:
写入的PDF文件已损坏。文件内没有任何内容,PDF阅读器在打开文件时给我错误。
我已经找到了解决此问题的方法。我尝试使用buffer
为true
的超级代理来访问API。
async function getData() {
try {
var fs = require('fs');
let res = await superagent
.get('https://localhost:3000/invoice')
.set("Content-Type", "application/json")
.set("accept", "application/octet-stream")
.buffer(true).disableTLSCerts()
console.log(res)
fs.writeFile('a.pdf',res.body)
}
catch(error) {
console.log("error " + error)
}
}