下面的请求始终以字符串形式返回response
。我需要JSON格式。现在,我无法获得res.data
(返回未定义),但是我可以看到res
为String。
如何获取响应的JSON格式?
这是我的要求:
nock('https://api.smartsheet.com/2.0/sheets/')
.defaultReplyHeaders({
"accept-encoding":"gzip, deflate",
"accept": "application/json",
"content-type": "application/json"
})
.get('/')
.reply(200, {"data" : "test"});
const buffer = Buffer.from(JSON.stringify({data: 'test'}));
const compressed = zlib.gzipSync(buffer);
nock('https://api.smartsheet.com/2.0/sheets/')
.defaultReplyHeaders({
"accept-encoding":"gzip, deflate",
"accept": "application/json",
"content-type": "application/json"
})
.get('/', compressed)
.reply(200, () => compressed);
但是我不知道如何在nock中发送二进制缓冲区。
如何在Get请求中发送二进制缓冲区?
请求代码:
this.smartsheet = SmartsheetClient({
accessToken: this.config.get('smartsheet.oauth_token'),
});
const [getError, sheets] = await this.to(this.smartsheet.sheets.listSheets());
if (getError) {
throw new this.Doh('Fail to get sheets', getError);
}
return sheets.data;
答案 0 :(得分:0)
默认情况下,Smartsheet API始终返回JSON。我不熟悉nock库,但是这似乎与如何处理响应有关。您可能想在他们的Github上打开一个问题,以询问是否在这里没有听到。
我确实在您的示例中看到您的网址是https://api.smartsheet.com/2.0/sheet/
Smartsheet API对请求中的名称使用复数形式,因此对于List Sheets请求,应使用https://api.smartsheet.com/2.0/sheets/
代替。